Azure Devops 服务器:如何设置构建管道以将 git 源作为任务而不是自动获取

Azure Devops Server: How to setup build pipeline to get git sources as a task instead of geting it automatically

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

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

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

我试图在命令行任务中模仿 Get Sources 步骤的作用(根据日志),但我无法让它正常工作。我还尝试通过命令行以其他方式手动设置 git 存储库,对于某些配置它可以工作,但对于某些配置则不能。 它应该适用于普通分支、嵌套分支和 PR 分支,但我觉得我在 git 使任务正常工作的方式中遗漏了一些东西。

如何以正确的方式为 Git 设置获取源代码步骤?

最简单的方法是从市场安装 Git Repository Downloader 扩展程序并在第一个任务中使用它。

另一种选择是使用命令行任务和 运行git clone

对于身份验证,您有 2 个选项:

  1. 在命令中输入密码:

git clone https://username:password@dev.azure.com/organization/project/_git/repo

  1. 创建个人访问令牌并将其放入命令中:

git clone https://PAT@dev.azure.com/organization/project/_git/repo

如果其他人有时看到这个问题,并想知道如何解决,这就是我最终得到的结果,以便能够从我们的策略构建中容纳 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