Azure Devops:在运行时覆盖环境变量

Bra*_*den 4 azure-devops azure-pipelines

我正在尝试设置一个可以从 Azure Devops 库使用的环境变量,默认情况下设置为 null 值。这部分正在工作,但我希望开发团队能够临时覆盖该值。我不想将其手动添加到所有环境变量中,我想在我的剧本中建立一个条件来说明何时 var != "" 而不是何时: var != "$(rollback)"

这是我的配置:

name: $(Date:yyyyMMdd)$(Rev:.r)

trigger: none

pr: none

resources:
  pipelines:
    - pipeline: my-ui
      source: my-ui-ci-dev
      trigger: true

variables:
  - group: Dev

jobs:
  - job: my_cd
    pool:
      vmImage: "ubuntu-20.04"
    container:
      image: "myacr.azurecr.io/devops/services-build:$(services_build_tag_version)"
      endpoint: "Docker Registry"

    steps:
      - task: Bash@3
        displayName: "My Playbook"
        env:
          git_username: "$(git_username)"
          git_password: "$(git_password)"
          config_repo: "$(config_repo)"
          service_principal_id: "$(service_principal_id)"
          service_principal_secret: "$(service_principal_secret)"
          subscription_id: "$(subscription_id)"
          tenant_id: "$(tenant_id)"
          rollback: "$(rollback)"
          source_dir: "$(Build.SourcesDirectory)"
          env_dir: "$(Agent.BuildDirectory)/env"
          HELM_EXPERIMENTAL_OCI: 1
        inputs:
          targetType: "inline"
          script: |
            ansible-playbook cicd/ansible/cd.yaml -i "localhost, " -v

Run Code Online (Sandbox Code Playgroud)

当选择运行管道时,我希望开发人员只需转到“运行”>“添加变量”>“手动添加变量和值”>“运行管道”

然后在剧本中,如果未定义,则值为“”,或者如果已定义,则显示为他们键入的值。关于如何使用 AZDO 执行此操作有什么建议吗?

Vin*_*ren 5

您可以使用运行时参数更轻松地完成此操作

parameters:
  - name: rollback
    type: string
    default: ' '

variables:
  - group: dev
  - ${{ if ne(parameters.rollback, ' ') }}:
    - name: rollback
      value: ${{ parameters.rollback }}
Run Code Online (Sandbox Code Playgroud)

这在实践中的运作方式是:

  1. 管道队列对话框自动包含一个“回滚”文本字段: 回滚参数文本字段的屏幕截图
  2. 如果开发人员在回滚参数字段中键入一个值,则该值将用于覆盖回滚变量
  3. 否则,使用变量组中的值。

请注意,您需要为该参数指定一个空格的默认值;否则管道不会让你将其留空。