基于调用存储库在 Azure DevOps 管道中动态使用服务连接

问题描述 投票:0回答:1

我有一个 Azure DevOps 管道设置,其中包含跨多个存储库共享的 YAML 模板。具体来说,我有:

  1. Repo1(Project1)中名为 kv_template.yaml 的 YAML 模板文件。此模板运行需要服务连接才能通过 Azure 进行身份验证的 Azure CLI 任务。
  2. 服务连接 1 是为 Project1 配置的,直接在 Repo1 中运行时由 kv_template.yaml 使用。
  3. 服务连接 2 是为 Project2 配置的,应在 Repo2 (Project2) 中的管道调用 kv_template.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 azure-devops azure-pipelines azure-pipelines-yaml serviceconnection
1个回答
0
投票

检查此解决方案:如何在带有变量组的 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) 
© www.soinside.com 2019 - 2024. All rights reserved.