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

AOEU=$(echo aoeu)

并让Jenkins设置AOEU= AOEU。

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

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

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


当前回答

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

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

其他回答

最简单的方法

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

你怎么知道它有用

在我的例子中,我需要添加JMETER_HOME环境变量,使其可以通过我的Ant构建脚本在我的Jenkins服务器(Linux)上的所有项目中使用,并且不会干扰build.xml脚本中的本地构建环境(Windows和Mac)。通过Manage Jenkins - Configure System - Global属性来设置环境变量是最简单和侵入性最小的方法。不需要插件。


环境变量可以通过以下方式在Ant中使用:

<property environment="env" />
<property name="jmeter.home" value="${env.JMETER_HOME}" />

这可以通过添加:

<echo message="JMeter Home: ${jmeter.home}"/>

生产:

JMeter Home: ~/.jmeter

EnvInject Plugin(环境注入器插件)提供了几个选项来设置Jenkins配置中的环境变量。

通过选择将环境变量注入构建过程,您将得到:

文件路径 属性内容 脚本路径 脚本内容 最后评估Groovy脚本。


Groovy脚本为您提供了基于执行命令的结果设置环境变量的可能性:

执行方法:

    return [HOSTNAME_SHELL: 'hostname'.execute().text, 
        DATE_SHELL: 'date'.execute().text,
        ECHO_SHELL: 'echo hello world!'.execute().text
    ]

或者使用显式的Groovy代码:

    return [HOSTNAME_GROOVY: java.net.InetAddress.getLocalHost().getHostName(),
        DATE_GROOVY: new Date()
    ] 

(关于每个方法的更多细节可以在内置帮助中找到(?))


不幸的是,你不能从脚本内容做同样的事情,因为它声明:

执行一个脚本文件,目的是设置一个环境,如创建 文件夹,复制文件,等等。给出脚本文件内容。你 可以使用上面的属性变量。但是,添加或重写 脚本中的环境变量不会对 建立工作。

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

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

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

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

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

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

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