首页 > 解决方案 > Azure Devops Server:如何设置构建管道以将 git 源作为任务而不是自动获取

问题描述

我试图通过将它们分成多个代理步骤来提高一些构建的效率。第一步将构建我们的整个产品,包括单元测试和所有内容,并创建一个包含单元测试的工件,两个或多个后续步骤将运行单元测试套件的不同部分。

到目前为止一切顺利,一切正常,但所有构建代理步骤都获得了 git 源,即使它只是第一步所必需的。这需要另外 1.5 分钟,这可以使构建更加高效,并且消除了一些使它更加高效的要点(每个步骤的多个构建代理不会大大提高性能,因为它们都可以在 1.5 分钟内获取源代码第一的)。

我在管道中的“获取源”步骤中找到了“不同步源”复选框,这使得构建步骤不再获取源。但是我确实想为第一个构建步骤获取资源,所以现在我必须手动进行吗?

我试图在命令行任务中模仿 Get Sources 步骤的作用(根据日志),但我不能让它工作。我还尝试过通过命令行手动设置 git repo 的其他方式,并且对于某些配置它可以工作,但对于某些配置它没有。它应该适用于普通分支、嵌套分支和 PR 分支,但我觉得我在 git 的工作方式上遗漏了一些东西,以便让任务完成适当的工作。

如何以正确的方式为 Git 设置 Get Sources 步骤?

标签: gitazure-devopsazure-pipelinesazure-devops-server-2019

解决方案


如果有人在某个时候看到这个问题,并且想知道如何处理,这就是我最终得到的结果,以便能够从我们的 Policy 构建中容纳 Pull Reqest 分支。从管道中的命令行任务运行:

git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" clone --progress {REPOPATH} .
git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" fetch --force --progress origin +$(Build.SourceBranch):$(Build.SourceBranchName)
git checkout $(Build.SourceBranchName) --progress

推荐阅读