【问题标题】:Azure Devops Server: How to setup build pipeline to get git sources as a task instead of geting it automaticallyAzure Devops Server:如何设置构建管道以将 git 源作为任务而不是自动获取
【发布时间】:2020-10-11 23:45:20
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: git azure-devops azure-pipelines azure-devops-server-2019


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      简单的方法是从市场安装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

      【讨论】:

      • 我可以做些什么来让 Git Repository Downloader 工作,即使是由 Pull Requests 触发的构建?
      • 如果是PR我认为ADO会为PR创建一个新的合并分支,检查是否可以在任务中指定他。
      • 不能让它工作,但终于有一个手动命令行任务来完成这项工作,请参阅另一个答案。
      猜你喜欢
      • 2020-01-18
      • 2019-06-12
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      相关资源
      最近更新 更多