我有一个 Azure DevOps 管道设置,其中包含跨多个存储库共享的 YAML 模板。具体来说,我有:
我考虑过在保存 kv_template.yaml 的存储库中共享多个服务连接,但我不确定检测或传递哪个存储库/项目正在调用 kv_template.yaml 的最佳方法。我理想的解决方案是在 Repo1 中调用 kv_template.yaml 时动态使用服务连接 1,在 Repo2 中调用时动态使用服务连接 2。
我的目标是让 kv_template.yaml 根据调用它的存储库/管道动态选择适当的服务连接,而不需要硬编码或复制模板文件。
Azure DevOps YAML 中有没有办法检测调用存储库或项目并使用适当的服务连接?
kv_template.yaml 脚本:
- name: parameter1
type: string
- name: parameter2
type: string
jobs:
- job: Job1
steps:
- checkout: self
- task: AzureCLI@2
inputs:
azureSubscription: '$(SERVICE_CONNECTION_1)'
scriptType: 'pscore'
scriptLocation: 'scriptPath'
scriptPath: 'helper_scripts/script.ps1'
arguments: '-WebhookURL "${{ parameters.parameter1 }}" -KeyVaultsToCheck "${{ parameters.parameter2 }}"'
env:
GLOBAL_SUBSCRIPTION: $(GLOBAL_SUBSCRIPTION)
检查此解决方案:如何在带有变量组的 azure DevOps yaml 管道的变量中使用 IF ELSE?
- name: parameter1
type: string
- name: parameter2
type: string
jobs:
- job: Job1
steps:
- checkout: self
- task: AzureCLI@2
inputs:
${{ if eq(variables['Build.Repository.Name'], 'repo1') }}:
azureSubscription: '$(SERVICE_CONNECTION_1)'
${{ if eq(variables['Build.Repository.Name'], 'repo2') }}:
azureSubscription: '$(SERVICE_CONNECTION_2)'
scriptType: 'pscore'
scriptLocation: 'scriptPath'
scriptPath: 'helper_scripts/script.ps1'
arguments: '-WebhookURL "${{ parameters.parameter1 }}" -KeyVaultsToCheck "${{ parameters.parameter2 }}"'
env:
GLOBAL_SUBSCRIPTION: $(GLOBAL_SUBSCRIPTION)