TFS2015:如何设置两个不同的构建定义以使用相同的本地存储库(git)?

时间:2015-11-16 12:01:11

标签: git tfs azure-devops tfs2015

我在TFS2015中有两个不同的构建定义,如图所示,可以在图片Def1和Def2上看到。他们从同一分支构建不同的解决方案,并使用相同的VSO构建代理(服务器上只安装了1个实例)。 当我对构建进行排队时,Def1构建会将存储库签出到与Def2不同的文件夹中的本地。 (比如:c:\ TfsData \ Build_work \ ee25a947和  c:\ TfsData \ Build_work \ faee67a3)但我想强迫他们使用相同的本地git存储库(因为它不必拥有两个不同的本地存储库,他们将使用不同的构建步骤构建不同的解决方案)。 有没有办法配置它?

谢谢

enter image description here

3 个答案:

答案 0 :(得分:4)

不,没有办法让构建代理将两个解决方案放在同一个位置。系统正确地假定,作为构建的一部分,可以对源进行更改,因此需要单独构建。

这是为了防止构建之间的流血。

答案 1 :(得分:2)

如果您使用自己的代理而不是云代理,则可以执行以下操作:

  • 转到已配置的工作文件夹
  • 转到“sourceRootMapping \\”文件夹
  • 打开'SourceFolder.json'并将目录路径更新为您要用于'def2'构建定义的相同存储库路径。

以下是我们必须更新的值:

  "build_artifactstagingdirectory": "1\\a",
  "agent_builddirectory": "1",
  "build_sourcesdirectory": "1\\s",
  "common_testresultsdirectory": "1\\TestResults",

一旦我们更新了这些内容,那么'def1'和'def2'构建定义之间的get sources步骤就会在“1 \”

下使用相同的存储库路径开始

确保“lastBuildFolderNumber”的“SourceRootMappings \ Mappings.json”的值不为0。如果是这种情况,并且您开始将此构建代理用于新的构建定义,它将覆盖您之前的存储库。

答案 2 :(得分:0)

假设您的意思是启动获取源的过程。在构建之后检查构建日志时,您将看到:

  

同步存储库: TeamProjectName (Git)

     

xxxx 签出到C:\ a \ 1 \ s

     

检出存储库 TeamProjectName 的分支引用/ heads / branch   在提交 xxxx

实际上,默认情况下, xxxx 是分支中的最新提交ID,默认情况下,最新提交将在构建期间签出。字符/数字是提交ID。