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

AOEU=$(echo aoeu)

并让Jenkins设置AOEU= AOEU。

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

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

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


当前回答

最简单的方法

你可以使用EnvInject插件在构建启动时注入环境变量。例如:

你怎么知道它有用

其他回答

我们使用的Scripted Pipeline语法是这样的:

env.AEOU = sh label:'set env var',
                returnStdout: true,
               script : '''#!/bin/bash
                   echo "aeou"
               '''
sh label:'checkit',
 script : '''#!/bin/bash
    echo "${AEOU}"
 '''

注意,sh步骤的脚本参数使用了三单引号表示法。这确保了${AEOU}不会被Groovy插入,而是被bash shell插入。

这可以通过EnvInject插件以以下方式完成:

创建一个“Execute shell”构建步骤,运行: echo AOEU=$(echo AOEU) >概要文件 创建一个注入环境变量构建步骤,并将“属性文件路径”设置为propsfile。

注意:这个插件(大部分)与Pipeline插件不兼容。

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

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)来解析它。

你可以尝试这样做

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

你可以使用环境注入器插件在作业和节点级别设置Jenkins中的环境变量。以下是将它们设置为工作级别的步骤:

在Jenkins网页界面,进入Manage Jenkins > Manage Plugins并安装插件。

进入作业Configure界面 在“构建”部分中找到“添加构建步骤”并选择“注入环境变量” 将所需的环境变量设置为VARIABLE_NAME=VALUE模式。在我的例子中,我改变了USERPROFILE变量的值

如果你需要根据某些条件(例如作业参数)定义一个新的环境变量,那么你可以参考这个答案。