none
Последовательная сборка с двух проектов RRS feed

  • Вопрос

  • Здравствуйте!

    В коллекции проектов у меня имеется два проекта (Team Project) Project1 и Project2, в каждом из которых настроены сборка (Builds) Build_Project1 и Build_Project2. Как я могу запустить сборку двух проектов последовательно одним действием (например, одним запросом) т.к. на данный момент мне приходится запускать сборку  Build_Project1 (Queue New Bild), а затем Build_Project2, который становиться в очередь, но мне надо сделать так: если сборка Build_Project1 не прошла успешно, то сборка Build_Project2 не должна запускаться.

    ___
    25 апреля 2014 г. 5:47

Все ответы

  • на сайте http://ashamray.wordpress.com/stati_hf/microsoft_vs/tfsguide/short_recom_team_build/#bookmark120 нашел следующую статью:

    Как выполнять сборку проекта, имеющего зависимости от другого группового проекта

    Team Build не поддерживает сборку решений, объединяющих несколько групповых проектов. Осуществить сборку таких решений можно, соответствующим образом настраивая файл TFSBuild.proj. Тогда при сборке необходимый код других проектов будет изыматься прямо из системы контроля версий.

    Чтобы выполнить сборку проекта, имеющего зависимости от другого группового проекта, необходимо поместить исходный код или сборки того проекта в рабочее пространство на вашем сервере сборки. Для этого редактируйте файл TFSBuild.proj. Добавьте в него сборку или ссылку на решение и переопределите событие BeforeGet (Перед получением) для получения сборок или исходных файлов из всех групповых проектов, от которых зависит ваш проект.

    Чтобы выполнить сборку проекта, который зависит от другого группового проекта

    1. В Source Control Explorer извлеките для редактирования сценарий TFSBuild.proj.

    2. Под секцией PropertyGroup (Группа свойств) добавьте следующие настройки конфигурации:

    <!— должны находиться под PropertyGroup —>

    <TfCommand>$(TeamBuildRefPath)\..\tf.exe</TfCommand>

    <SkipInitializeWorkspace>true</SkipInitializeWorkspace>

    SkipInitializeWorkSpace позволяет пропустить вызов задач по умолчанию для уничтожения и воссоздания рабочего пространства на компьютере сборки. Это новое свойство используется в специальной цели BeforeGet (смотрите ниже).

    3. Добавьте следующие настройки конфигурации в записи ItemGroup, которые отвечают за отображение, как групповых проектов, так и решений. Убедитесь в правильности задания локальных путей для компьютера сборки. Одна локальная папка не может использоваться в нескольких отображениях. Это приведет к возникновению исключения MappingConflictException (Исключение «Конфликт отображений») при выполнении задачи CreateWorkspace (Создать рабочее пространство).

    <ItemGroup>

    <!— для каждого используемого решения добавляется по одной записи —> <SolutionToBuild Include=»$(SolutionRoot)\DependentApp\DependentApp.sln» /> <SolutionToBuild Include=»$(SolutionRoot)\YourApp\YourApp.sln» />

    </ItemGroup>

    <ItemGroup>

    <!— для каждого используемого Team Project добавляется по одной записи —> <Map Include=»$/YourApp/YourApp»>

    <LocalPath>$(SolutionRoot)\YourApp</LocalPath> </Map> <Map Include=»$/DependentApp/DependentApp»>

    <LocalPath>$(SolutionRoot)\DependentApp</LocalPath> </Map> </ItemGroup>

    4. Переопределите событие BeforeGet, чтобы рабочие пространства извлекались для каждого Team Project:

    <Target Name=»BeforeGet»> <DeleteWorkspaceTask

    TeamFoundationServerUrl=»$(TeamFoundationServerUrl)» Name=»$(WorkspaceName)» /> <Exec

    WorkingDirectory=»$(SolutionRoot)»

    Command=»&quot;$(TfCommand)&quot; workspace /new $(WorkSpaceName) /server:$(TeamFoundationServerUrl)»/>

    <Exec

    WorkingDirectory=»$(SolutionRoot)»

    Command=»&quot;$(TfCommand)&quot; workfold /unmap /workspace:$(WorkSpaceName) &quot;$(SolutionRoot)&quot;»/> <Exec

    WorkingDirectory=»$(SolutionRoot)»

    Command=»&quot;$(TfCommand)&quot; workfold /map /workspace:$(WorkSpaceName) /server:$(TeamFoundationServerUrl) &quot;%(Map.Identity)&quot; &quot;%(Map.LocalPath)&quot;»/> </Target>

    5. Зарегистрируйте изменения сценария в системе контроля версий и выполните сборку.

    Примечание: В TFS 2008, для типов сценариев сборки больше нет ограничений на извлечение файлов из других групповых проектов. Можно просто редактировать отображения рабочих пространств с помощью диалогового окна Build Definition Editor (Редактор описания сборки) и отображать необходимые файлы.

    Дополнительные источники

    Более подробную информацию можно найти в сообщении блога Маниша Агарвала (Manish Agarwal) «Working with multiple team projects in Team Build» (http://blogs.msdn.com/manishagarwal/archive/2005/12/22/506635.aspx).

    25 апреля 2014 г. 8:59