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

AOEU=$(echo aoeu)

并让Jenkins设置AOEU= AOEU。

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

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

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


当前回答

尝试环境脚本插件(GitHub),它非常类似于EnvInject。它允许您在构建之前(SCM签出之后)运行一个脚本,为它生成环境变量。如。

在你的脚本中,你可以输出例如FOO=bar到标准输出来设置该变量。

添加到现有path样式变量的示例:

echo PATH+unique_identifier=/usr/local/bin

因此,您可以自由地在脚本中做任何您需要做的事情—要么cat文件,要么从项目的源代码树中以其他语言运行脚本,等等。

其他回答

我们使用groovy作业文件:

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

在我的例子中,我使用以下选项配置环境变量,它工作了-

Manage Jenkins -> Configure System -> Global Properties -> Environment Variables -> Add

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

然而,对于带有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

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

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

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

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

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

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