我试图仅检查触发管道的存储库。
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
:
- 查看触发存储库:
checkout: self
- 查看其他存储库:
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/