Jenkins 声明式管道问题,使用环境变量来控制阶段

时间:2021-02-25 15:52:05

标签: jenkins jenkins-pipeline

我正在尝试同时使用 branch_nameenv 变量来启用和禁用管道中的测试。 env 控制被触发的测试。但是,即使表达式条件满足我的管道,也不会触发预期的测试。

environment {
    sanity_tests_enabled = true
    smoke_tests_enabled = false
}
stages {
    stage('Build') { 
        steps {
            sh 'npm install --force'
            sh 'ng build'
        }
    }
    stage('Test') { 
        parallel {
            stage('Sanity Tests') {
                when {
                    allOf {
                        expression{env.sanity_tests_enabled = true}
                        anyOf {
                            branch 'PR-*'
                            branch 'dev'
                        }
                    }
                }

2 个答案:

答案 0 :(得分:0)

env.sanity_tests_enabled = true 是分配而不是比较。您正在使用 == 比较布尔值。我还认为您的 ; 中缺少 anyOf

when {
  allOf {
    expression{env.sanity_tests_enabled == true}
    anyOf {
      branch 'PR-*';
      branch 'dev'
    }
   }
}

答案 1 :(得分:0)

你也可以这样试试

  1. 在管道之前全局声明布尔值

Parameters

boolean sanity_tests_enabled = true