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

Azure Devops: Overwrite Environment Variable at runtime

我正在尝试设置可从 Azure Devops 库中使用的环境变量,该变量默认设置为空值。这部分工作正常,但我希望开发团队能够临时覆盖该值。我不想将它手动添加到所有环境变量中,我想在我的剧本中建立一个条件来说明什么时候 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

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

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

您可以使用 run-time parameter

更轻松地做到这一点
parameters:
  - name: rollback
    type: string
    default: ' '

variables:
  - group: dev
  - ${{ if ne(parameters.rollback, ' ') }}:
    - name: rollback
      value: ${{ parameters.rollback }}

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

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

注意需要给参数一个默认值单个space;否则管道不会让你把它留空。