Azure DevOps checkout 仅触发存储库

标签 azure azure-devops azure-pipelines azure-pipelines-yaml azure-repos

我试图仅检查触发管道的存储库。

resources:
  repositories:
  - repository: repo2
    type: git
    name: branching/repo2
    ref: dev
    trigger:
    - dev
  
  - repository: repo1
    type: git
    name: branching/repo1
    ref: main
    trigger:
    - main
  
pool:
  vmImage: ubuntu-latest


steps:
- script: echo "$(Build.Repository.Name)"
- ${{ if in(variables['Build.Repository.Name'], 'repo1') }}:
  - checkout: repo1
- ${{ if in(variables['Build.Repository.Name'], 'repo2') }}:
  - checkout: repo2

但每次,这只检查源存储库。

当管道从repo1触发时,我尝试 checkout repo1,当管道从repo2触发时,我尝试 checkout repo2。

我不想继续更改管道文件中 checkout 存储库的名称。 是否有另一种方法可以让结账任务自动选择触发的存储库?

最佳答案

检查多个存储库涉及不同的调用方式 checkout :

  1. 查看触发存储库:checkout: self
  2. 查看其他存储库:checkout: <reponame>

使用结帐的更多信息和选项请参阅: https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#specify-multiple-repositories

编辑

假设您的触发器存储库是 repo1 或 repo2,您的 YAML 示例将如下所示:

resources:
  repositories:
  - repository: repo2
    type: git
    name: branching/repo2
    ref: dev
    trigger:
    - dev
  
  - repository: repo1
    type: git
    name: branching/repo1
    ref: main
    trigger:
    - main
  
pool:
  vmImage: ubuntu-latest


steps:
- script: echo "Triggered repo: $(Build.Repository.Name)"
- checkout: self
- ${{ if in(variables['Build.Repository.Name'], 'repo1') }}:
  - checkout: repo2
- ${{ if in(variables['Build.Repository.Name'], 'repo2') }}:
  - checkout: repo1

关于Azure DevOps checkout 仅触发存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75311021/

相关文章:

c# - Microsoft 身份 - 撤销授权

azure - 在企业笔记本电脑中安装 Bicep cli 错误

Azure DevOps 中的 Azure 清除脚本

azure - 为什么在 Azure Artifacts 中不鼓励使用组织范围的源,而不是项目范围的源?

azure - Azure DevOps 中的构建管道和发布管道有什么区别?

azure - 使用 Azure Sql(地理位置)扩展场景

python-3.x - Python 3.7 API 托管为适用于 Windows 的 Azure 应用服务

azure - 如何从 Azure DevOps 管道将 secret 写入 azure key Vault?

azure - 跳过远程 Azure 管道模板存储库中的步骤

azure-devops - Azure DevOps 任务作业之间的可变 secret issecret=true