3

由于条件批准在 azure yaml 管道中不起作用,我一直在尝试在部署阶段使用 2 环境的解决方法,如 yaml 所示。使用作业中的条件和变量我想检查是否需要批准,但是当我运行管道时,我看到它仍在请求批准,即使需要批准的部署作业的条件不满足。尽管需要批准的作业按预期跳过,但发布批准。我不明白为什么它要求批准。

  1. 在评估工作条件之前,是否首先对某个阶段执行审批?
  2. 我错过了yaml中的某些内容吗?

trigger:
- none


variables:
 - group: pipelinevariables
   # Agent VM image name
 - name: vmImageName
   value: 'ubuntu-latest'

stages:

- stage: Deploy
  displayName: Deploy stage
  jobs:  
  - deployment: DeployWebWithoutApprval
    displayName: deploy Web App without approval
    condition: and(succeeded(),ne(variables.DEV_APPROVAL_REQUIRED,'true'))
    pool:
      vmImage: $(vmImageName)
    # creates an environment if it doesn't exist
    environment: 'app-dev'
    strategy:
      runOnce:
        deploy:
          steps:
          - script: echo No approval

  - deployment: DeployWebWithApprval
    displayName: deploy Web App with approval
    dependsOn: DeployWebWithoutApprval
    condition: and(eq(dependencies.DeployWebWithoutApprval.result,'Skipped'),eq(variables.DEV_APPROVAL_REQUIRED,'true'))
    pool:
      vmImage: $(vmImageName)
    # creates an environment if it doesn't exist
    environment: 'app-dev-with-approval'
    strategy:
      runOnce:
        deploy:
          steps:
          - script: echo requires approval


跳过工作,但检查运行

更新: 如果我定义了 2 个阶段和相同的一组条件,则此方法有效,但这将在构建详细信息页面中显示我们不想要的 2 个阶段

另一个问题是我们可以根据变量组中的变量值有条件地插入阶段模板吗

  • 阶段${{ifeq(variables['Policy_Approval_Required'],'true')}}:
4

2 回答 2

2

支持有条件插入模板,您可以查看以下链接:https ://github.com/microsoft/azure-pipelines-agent/issues/1749 。检查以下示例:

- ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
  - template: sharedstep.yml@templates
    parameters:
       value: true
于 2020-06-30T09:18:57.470 回答
0

我在审批门和条件方面遇到了完全相同的问题。遗憾的是,目前尚不支持它,但已向 Microsoft 报告(此处)。还有这个问题。似乎是评估批准与条件的顺序问题。

于 2020-08-13T10:54:55.170 回答