Вручную запустить сборку команды TFS - PullRequest
5 голосов
/ 10 октября 2008

Как бы вы вручную запустили дополнительные билды команды из билда команды? Например, когда мы были в CC.Net, другие сборки запускались, если некоторые сборки были успешными. Вторая сборка может быть либо проектами, использующими этот компонент, либо дополнительными, долго работающими тестовыми библиотеками для того же компонента.

Ответы [ 2 ]

4 голосов
/ 10 октября 2008

Один из способов сделать это - добавить в файл TFSBuild.proj цель AfterEndToEndIteration, которая будет запускать командную строку TfsBuild.exe для запуска других сборок. Я думаю, что-то вроде этого (хотя я не проверял это)

  <Target Name="AfterEndToEndIteration">

    <GetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
                        BuildUri="$(BuildUri)"
                        Condition=" '$(IsDesktopBuild)' != 'true' ">
      <Output TaskParameter="Status" PropertyName="Status" />
    </GetBuildProperties>

    <Exec Condition=" '$(Status)'=='Succeeded' "
          Command="TfsBuild.exe start /server:$(TeamFoundationServerUrl) /buildDefinition:&quot;Your Build Definition To Run&quot;" />

  </Target>
3 голосов
/ 14 ноября 2008

Я делал одно и то же, что Мартин предлагал несколько раз (его блог бесполезен, кстати). Тем не менее, мне в конечном итоге понадобилось запускать каскадные сборки, подобные этой (основанные на некоторых других сложных правилах), и я создал специальную задачу для этого. Сделайте ваши сценарии сборки красивыми и простыми, что даст вам больше гибкости и возможностей инкапсуляции.

    public override bool Execute()
    {       
        IBuildDefinition[] buildDefinitions = BuildServer.QueryBuildDefinitions(ProjectName);

        foreach (IBuildDefinition build in buildDefinitions)
        {
            if(build.Enabled) //I did a bunch of custom rules here
            {
                Log.LogMessage(String.Concat("Queuing build: ", build.Name));
                BuildServer.QueueBuild(build);
            }
        }

        return true;
    }

В блоге Аарона Халльберга есть еще кое-что хорошее:

http://blogs.msdn.com/aaronhallberg/archive/2007/04/24/team-build-object-model-queueing-a-build.aspx

...