我在TFS2015中有两个不同的构建定义,如图所示,可以在图片Def1和Def2上看到。他们从同一分支构建不同的解决方案,并使用相同的VSO构建代理(服务器上只安装了1个实例)。 当我对构建进行排队时,Def1构建会将存储库签出到与Def2不同的文件夹中的本地。 (比如:c:\ TfsData \ Build_work \ ee25a947和 c:\ TfsData \ Build_work \ faee67a3)但我想强迫他们使用相同的本地git存储库(因为它不必拥有两个不同的本地存储库,他们将使用不同的构建步骤构建不同的解决方案)。 有没有办法配置它?
谢谢
答案 0 :(得分:4)
不,没有办法让构建代理将两个解决方案放在同一个位置。系统正确地假定,作为构建的一部分,可以对源进行更改,因此需要单独构建。
这是为了防止构建之间的流血。
答案 1 :(得分:2)
如果您使用自己的代理而不是云代理,则可以执行以下操作:
以下是我们必须更新的值:
"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。