我希望能够做到以下几点:

AOEU=$(echo aoeu)

并让Jenkins设置AOEU= AOEU。

Jenkins中的环境变量部分不会这样做。相反,它设置了AOEU='$(echo AOEU)'。

如何让Jenkins计算shell命令并将输出分配给环境变量?

最后,我希望能够将作业的执行程序分配给一个环境变量,该环境变量可以传递给其他脚本或由其他脚本使用。


当前回答

你可以尝试这样做

stages {
        stage('Build') {
            environment { 
                    AOEU= sh (returnStdout: true, script: 'echo aoeu').trim()
                }
            steps {
                sh 'env'
                sh 'echo $AOEU'
            }
        }
    }

其他回答

通常可以在“配置系统”的“全局属性”中配置环境变量。

然而,对于带有shell替换的动态变量,您可能希望在Jenkins HOME目录下创建一个脚本文件,并在构建期间执行它。需要SSH访问。为例。

以Jenkins登录:sudo su - Jenkins或sudo su - Jenkins -s /bin/bash 创建一个shell脚本,例如: echo 'export VM_NAME="$JOB_NAME"' > ~/load_env.sh export AOEU=$(echo AOEU)> > ~ / load_env.sh Chmod 750 ~/load_env.sh 在Jenkins Build (Execute shell)中,在任何其他事情之前调用脚本及其变量,例如。 源~ / load_env.sh

你可以尝试这样做

stages {
        stage('Build') {
            environment { 
                    AOEU= sh (returnStdout: true, script: 'echo aoeu').trim()
                }
            steps {
                sh 'env'
                sh 'echo $AOEU'
            }
        }
    }

我们使用groovy作业文件:

description('')
steps {
    environmentVariables {
        envs(PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true)
    }
}

这是存储环境变量并访问它的代码片段。

node {
   withEnv(["ENABLE_TESTS=true", "DISABLE_SQL=false"]) {
      stage('Select Jenkinsfile') {
          echo "Enable test?: ${env.DEVOPS_SKIP_TESTS}
          customStep script: this
      }
   }
}

注意:环境变量的值是一个字符串。如果你想使用它作为一个布尔值,那么你必须使用boolean .parse(env.DISABLE_SQL)来解析它。

有一个Build Env传播器插件,它可以让你添加新的构建环境变量,例如:

任何后续的传播构建环境变量步骤都将覆盖先前定义的环境变量值。