【问题标题】:How to assign a an env variable in the middle of a jenkins job如何在詹金斯工作中分配一个环境变量
【发布时间】:2020-12-09 21:35:01
【问题描述】:

我有一个包含管道的 Jenkinsfile。我设置了一个可选的参数,如果没有设置参数,也会设置一个默认值:

parameters {
    string(name: 'MY_VAR', defaultValue: 'foo', description: 'my var that can be optional')
}

在阶段的中间,我想用一些其他值覆盖(仅在某些时候,并且只有在传递了一些其他特定参数的情况下)这个“my_var”。

到目前为止,这是可行的:

        stage('Build') {
            steps {
                env.MY_VAR="foobar"
            }
        }

但我想从文件中读取该变量,所以我想做类似的事情:

        stage('Build') {
            steps {
                // Of course none of following work
                env.MY_VAR=$(cat /tmp/my-file)
               
                //or
                sh "new_var=$(cat /tmp/my-file)"
                env.MY_VAR=$new_var 
            }
        }

我怎样才能做到这一点?

【问题讨论】:

    标签: java jenkins groovy jenkins-pipeline


    【解决方案1】:

    我想你需要使用脚本块。在脚本块中定义变量将允许您在整个管道中使用它们,而不仅仅是在单独的阶段。

    stage ('Build') {
      steps {
        script {
          env.MY_VAR=sh returnStdout: true, script: """ cat /tmp/my-file """
          echo "${env.MY_VAR}"
        }
      }
    }
    

    【讨论】:

      【解决方案2】:

      您实际上可以在脚本语句中使用任何 groovy 库。 例如,您可以使用 File 类来读取文本文件:

      
      pipeline {
          agent any
          stages {
              stage('Build') {
                  steps {
                      script {
                          def filePath = "/tmp/my-file"
                          env.VAR = new File(filePath).text
                      }
                  }
              }
              stage('Test') {
                  steps {
                      echo env.VAR
                  }
              }
          }
      }
      

      【讨论】:

      • 这看起来是一个干净的答案,并且可能会起作用,但是在我的詹金斯设置中,我收到了以下错误:RejectedAccessException: Scripts not permitted to use new java.io.File java.lang.String。我无权访问 Jenkins 设置,但这看起来也是一个干净的解决方案。
      猜你喜欢
      • 2016-11-09
      • 2018-07-26
      • 1970-01-01
      • 2016-04-07
      • 2011-08-14
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多