微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

适用于所有存储库的 Azure DevOps 通用分支策略构建管道

如何解决适用于所有存储库的 Azure DevOps 通用分支策略构建管道

我们正在为我们的组织制定政策。我们的一个需求是在每个使用 Sonarcloud 的 Pull Request 中都有一个构建和注释。有没有办法创建一个通用的 ci 构建管道,该管道将在每个 PR 上运行,检查相应的 repo,检测项目类型(或读取清单文件等)进行代码分析和构建,注释 PR?

因此,在 Azure DevOps 存储库中,您可以为所有主分支创建通用分支策略。我尝试使用独立的 yaml 管道,但在我创建 pr 时它从未启动。有人可以帮助我走上正轨吗?我需要在 yaml 中创建资源吗?我可以使用 PR 中的任何变量来检测 repo 和分支吗?

仅供大家理解,您可以创建通用的分支策略和个人。

非常感谢

解决方法

由于 this thread 中报告的已知问题,您需要在 yaml 的资源部分添加所有存储库。

resources:
  repositories:
    - repository: MyRepo
      type: git
      name: MyRepo

但是,如果您在 Build Validation 中使用经典 UI 管道而不是 yaml 管道。您不需要在资源部分添加所有存储库。但是你需要跳过管道来同步源:(转到管道编辑页面-->点击获取源-->勾选不同步源)

enter image description here

您可以使用 predefined variables 获取有关拉取请求的信息。见下文:

$(Build.Repository.Name)
$(System.PullRequest.PullRequestId)

然后您可以在脚本任务中运行 git 命令来检查拉取请求分支。见下例:

resources:
  repositories:
    - repository: MyRepo
      type: git
      name: MyRepo
pool: 
  vmImage: windows-latest

steps:
- checkout: none
- powershell: |
    
    git clone "https://$(System.AccessToken)@dev.azure.com/OrganizationName/$(System.TeamProject)/_git/$(Build.Repository.Name)"
  
    cd "$(Build.Repository.Name)"
    git fetch origin pull/$(System.PullRequest.PullRequestId)/merge:pr-$(System.PullRequest.PullRequestId) 
    # checkout pr branch
    git checkout pr-$(System.PullRequest.PullRequestId)

注意:您需要为目标仓库授予build service account读取权限

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?