如何在使用来自多个“团队项目”的源代码的“visual studio团队服务”中创建构建定义?

时间:2016-11-17 17:06:07

标签: build continuous-integration azure-devops build-server team-project

我喜欢使用VSTS(“视觉工作室团队服务”),但我遇到了一个重大问题。

基本上,我有一些类库解决方案(例如ClassLibrary1,ClassLibrary2),我在其他项目中使用它们作为参考(例如websiteSolution1,websiteSolution2,websiteSolution3。)

当然,我希望每个解决方案都有一个单独的git repo(VSTS中的团队项目),假设“团队项目”与它们包含的解决方案具有相同的名称。

现在我想用以下规则创建一些构建定义:

  1. 如果有人对类库“团队项目”(例如ClassLibrary1)进行任何更改,那么首先我们构建该classLibrary解决方案并使用结果(DLL文件)将其提供给网站解决方案(例如websiteSolution1, websiteSolution2,websiteSolution3。)并最终建立了网络解决方案(在不同的团队项目中,但帐户相同)

  2. 如果有人对其中一个网站解决方案(例如websiteSolution1)进行了任何更改,那么首先我们构建每个类库“团队项目”(例如ClassLibrary1,ClassLibrary2)并使用结果(DLL文件)将其提供给网站解决方案已经提交(例如websiteSolution1,) 最后构建Web解决方案(在不同的团队项目中,但是使用相同的帐户)

  3. 问题: 当我创建一个新的“构建定义”时,我只能看到包含构建定义的同一个团队项目中的代码。

1 个答案:

答案 0 :(得分:1)

不支持VSTS git构建的多个存储库。 (如果我们使用TFVC,我们可以映射多个来源)

There是您可以投票的相关用户语音。

解决方法:

您可以通过git命令在其他存储库中获取其他文件(命令行构建步骤,您需要选中允许脚本访问构建定义的Option标记中的OAuth令牌)。

enter image description here

  

1.如果有人对其中一个类库"团队项目进行了任何更改" (例如ClassLibrary1)然后我们首先构建该classLibrary解决方案并使用结果(DLL文件)将其提供给网站解决方案(例如websiteSolution1,websiteSolution2,websiteSolution3。),最后构建Web解决方案(在不同的团队项目中,但是同一帐户)

步骤:

  1. 为classlibrary项目/解决方案
  2. 创建新的构建定义
  3. 添加PowerShell构建步骤以调用构建REST API以对您网站的构建进行排队(检查this文章以获取代码)
  4. 检查持续集成(CI)并在此构建定义的“触发器”选项卡中设置分支过滤器
  5.   

    2.如果有人对网站解决方案之一(例如websiteSolution1)进行任何更改,那么首先我们构建每个类库和团队项目" (例如ClassLibrary1,ClassLibrary2)并使用结果(DLL文件)将其提供到网站解决方案中,并提交(例如websiteSolution1),最后构建Web解决方案(在不同的团队项目中,但帐户相同)

    步骤:

    1. 为WebSites解决方案创建构建定义
    2. 将命令行构建步骤添加到Run git命令以获取另一个存储库中的classlibrary文件(参见上一个屏幕截图)
    3. 添加Visual Studio Build步骤以构建classlibrary项目/解决方案
    4. 添加复制文件步骤,将构建结果文件(例如.dll文件)复制到网站项目的classlibray引用的相关路径所需的文件夹中。您可以在项目文件中查看它,
    5. 例如:

      <Reference Include="ClassLibraryB">
            <HintPath>..\..\MSBuildDemoSolution1\ClassLibrary1\Lib\ClassLibraryB.dll</HintPath>
          </Reference>
      
      1. 添加Visual Studio Build步骤以构建网站项目/解决方案