繁体   English   中英

覆盖变量 Azure Yaml 管道不工作

[英]Overwrite Variable in Azure Yaml Pipeline not working

我的意图是使用默认变量运行管道。 变量createRelease应该指示除了 `TestApplication.

在伪代码中:

RunJob('TestApplication')

if(!createRelease) 
    RunJob('BuildForDev')

if(createRelease)
    RunJob('BuildForUatRelease')

它不会以某种方式覆盖createRelease的值。 任何人有什么想法为什么不呢?

我的管道 yaml 看起来像:

trigger:
- main
- feature/*

pool:
  vmImage: ubuntu-latest

variables:  
  - name: createRelease
    value: false

stages:
  - stage: CI_Build
    displayName: Build and Test App
    jobs:
      - job: TestApplication
        displayName: Building and testing
        condition: always()
        steps:
          - task: Bash@3
            displayName: Maven Test Application
            inputs:
              targetType: 'inline'
              script: |
                echo 'mvn test'
      - job: BuildForDev
        displayName: Build Application for Develop
        dependsOn: TestApplication
        condition: |
          and(
            succeeded('TestApplication'),
            eq(variables['Build.SourceBranchName'], 'main'),
            eq(variables.createRelease, 'false')
          )
        steps:
          - task: Bash@3
            displayName: Maven test Application
            inputs:
              targetType: 'inline'
              script: |
                echo mvn test
      - job: BuildForUatRelease
        displayName: Release Application
        dependsOn: TestApplication
        condition: |
          and(
            succeeded('TestApplication'),
            eq(variables['Build.SourceBranchName'], 'main'),
            eq(variables.createRelease, 'true')
          )
        steps:
          - task: Bash@3
            displayName: Set Git Credentials
            inputs:
              targetType: 'inline'
              script: |
                echo 'mvn release prepare'

Pipeline 中可被覆盖的变量定义:

在此处输入图像描述

我如何在运行前设置createRelease

在此处输入图像描述

您正在为 YAML 中的变量分配值,该值将优先于队列时定义的变量。 这样想可能会有所帮助:

  • 您使用createRelease: True变量对管道进行排队
  • Azure DevOps为管道创建执行上下文并执行你的pipeline.yml
  • 您的管道定义了createRelease: False的值

解决:

  1. 从 yaml 中删除createRelease变量

  2. 编辑管道:

  3. 点击变量:

  4. 添加一个新变量并为 createRelease 变量设置默认值。 将其设置为允许用户在排队时更改值:

  5. 单击确定。

或者,您可能需要考虑创建参数而不是变量:

trigger:

parameters:
- name: createRelease
  displayName: 'Create a Release'
  type: boolean
  default: false

stages:
- stage: ...
  jobs:
  - job: ...
    steps:
    - script: 'hello'
      condition: ${{ eq( parameters.createRelease, 'true') }}
   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM