Noe*_*Yap 207 continuous-integration environment-variables jenkins
我希望能够做到这样的事情:
AOEU=$(echo aoeu)
Run Code Online (Sandbox Code Playgroud)
詹金斯设定了AOEU=aoeu.
Jenkins中的Environment Variables部分没有这样做.相反,它设置AOEU='$(echo aoeu)'.
如何让Jenkins评估shell命令并将输出分配给环境变量?
最终,我希望能够将作业的执行程序分配给可以传递到其他脚本或由其他脚本使用的环境变量.
mal*_*cot 208
这可以通过EnvInject插件以下列方式完成:
创建一个运行的"执行shell"构建步骤:
echo AOEU=$(echo aoeu) > propsfile
Run Code Online (Sandbox Code Playgroud)创建一个Inject环境变量构建步骤并将"Properties File Path"设置为propsfile.
注意:此插件(大部分)与Pipeline插件不兼容.
ken*_*y_k 101
您可以使用EnvInject插件在构建启动时注入环境变量.例如:


val*_*tis 47
在我的例子中,我需要JMETER_HOME在Jenkins服务器(Linux)上的所有项目中添加环境变量以通过我的Ant构建脚本提供,这种方式不会干扰build.xml脚本中的本地构建环境(Windows和Mac).通过Manage Jenkins设置环境变量- 配置系统 - 全局属性是实现此目的最简单,最不具侵入性的方法.不需要插件.
然后,Ant中的环境变量可用:
<property environment="env" />
<property name="jmeter.home" value="${env.JMETER_HOME}" />
Run Code Online (Sandbox Code Playgroud)
这可以通过添加以下内容来验证:
<echo message="JMeter Home: ${jmeter.home}"/>
Run Code Online (Sandbox Code Playgroud)
哪个产生:
JMeter主页:〜/ .jmeter
nik*_*nik 19
就我而言,我使用以下选项配置了环境变量并且它有效-
Manage Jenkins -> Configure System -> Global Properties -> Environment Variables -> Add
Run Code Online (Sandbox Code Playgroud)
JSi*_*ace 15
你可以尝试这样的事情
stages {
stage('Build') {
environment {
AOEU= sh (returnStdout: true, script: 'echo aoeu').trim()
}
steps {
sh 'env'
sh 'echo $AOEU'
}
}
}
Run Code Online (Sandbox Code Playgroud)
Aya*_*fov 14
您可以使用Environment Injector Plugin在作业和节点级别的Jenkins中设置环境变量.下面我将展示如何在工作级别设置它们.
Manage Jenkins > Manage Plugins并安装插件.Configure屏幕Add build step在Build部分中查找并选择Inject environment variables如果需要根据某些条件(例如作业参数)定义新的环境变量,可以参考此答案.
luk*_*a5z 13
EnvInject Plugin aka(Environment Injector Plugin)为您提供了几个从Jenkins配置中设置环境变量的选项.
通过选择Inject environment variables to the build process你会得到:
Properties File PathProperties ContentScript File Path
Script Content
最后Evaluated Groovy script.
Evaluated Groovy script您可以根据执行的命令结果设置环境变量:
execute方法: return [HOSTNAME_SHELL: 'hostname'.execute().text,
DATE_SHELL: 'date'.execute().text,
ECHO_SHELL: 'echo hello world!'.execute().text
]
Run Code Online (Sandbox Code Playgroud)
Groovy代码: return [HOSTNAME_GROOVY: java.net.InetAddress.getLocalHost().getHostName(),
DATE_GROOVY: new Date()
]
Run Code Online (Sandbox Code Playgroud)
(有关每种方法的更多详细信息,请参阅内置帮助(?))
不幸的是,你不能这样Script Content说:
执行旨在设置环境(如创建文件夹,复制文件等)的脚本文件.提供脚本文件内容.您可以使用上面的属性变量. 但是,在脚本中添加或覆盖环境变量对构建作业没有任何影响.
通常,您可以在Configure System中的Global属性中配置环境变量.
但是对于具有shell替换的动态变量,您可能希望在Jenkins HOME目录中创建脚本文件并在构建期间执行它.SSH访问是必需的.例如.
sudo su - jenkins或sudo su - jenkins -s /bin/bash创建一个shell脚本,例如:
echo 'export VM_NAME="$JOB_NAME"' > ~/load_env.sh
echo "export AOEU=$(echo aoeu)" >> ~/load_env.sh
chmod 750 ~/load_env.sh
Run Code Online (Sandbox Code Playgroud)在Jenkins Build(执行shell)中,先调用脚本及其变量,例如
source ~/load_env.sh
Run Code Online (Sandbox Code Playgroud)小智 7
这是存储环境变量并访问它的代码段。
node {
withEnv(["ENABLE_TESTS=true", "DISABLE_SQL=false"]) {
stage('Select Jenkinsfile') {
echo "Enable test?: ${env.DEVOPS_SKIP_TESTS}
customStep script: this
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:环境变量的值以字符串形式出现。如果您想将其用作布尔值,则必须使用 Boolean.parse(env.DISABLE_SQL) 解析它。
扩展@JSixface的答案:
要全局定义环境变量以便从声明性管道的所有阶段内进行访问,您可以在块environment中添加该部分pipeline。
pipeline {
agent {
node {
label 'myAgent'
}
}
environment {
AOEU = "${sh(returnStdout: true, script: 'echo aoeu').trim()}"
}
stages {
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
436071 次 |
| 最近记录: |