一尘不染

从阶段内部定义全局环境变量

jenkins

我在环境指令的管道顶部定义了环境变量:

    environment {
        var1 = 'sdfsdfdsf'
        var2 = 'sssssss'
    }

但是我需要在阶段中动态设置或覆盖一些内容。但是,如果我在一个阶段中使用environment
{}指令,则其他阶段将无法访问var。最初,我认为我可以在top环境指令中使用默认值定义它们,并在管道中覆盖它们,但这是我观察到的行为:

  1. 在环境块中定义var
  2. 尝试覆盖script {}块,例如: script {env.var1 = 'new value'}
  3. 该环境不会被覆盖

如何更改环境?


阅读 212

收藏
2020-07-25

共1个答案

一尘不染

您可以按照以下步骤进行操作:

  1. 在舞台环境中定义var {env.var1 =’value’}
  2. 您可以在其他阶段访问相同的var并在环境{env.var1 =’value2’}中更改值
         pipeline {
      agent any
      environment { 
         var1 = 'value'
      }

      stages {
         stage('Initialize') {
           steps {
            script {
            echo ("value : " + env.var1)
             }
           }
        }

        stage('build') {
          environment { 
            var1 = 'value2'
           }
           steps {
            script {
              echo ("value : " + env.var1)
            }
          }
        }
      }
    } 
2020-07-25