我希望能够做到以下几点:
AOEU=$(echo aoeu)
并让Jenkins设置AOEU= AOEU。
Jenkins中的环境变量部分不会这样做。相反,它设置了AOEU='$(echo AOEU)'。
如何让Jenkins计算shell命令并将输出分配给环境变量?
最后,我希望能够将作业的执行程序分配给一个环境变量,该环境变量可以传递给其他脚本或由其他脚本使用。
我希望能够做到以下几点:
AOEU=$(echo aoeu)
并让Jenkins设置AOEU= AOEU。
Jenkins中的环境变量部分不会这样做。相反,它设置了AOEU='$(echo AOEU)'。
如何让Jenkins计算shell命令并将输出分配给环境变量?
最后,我希望能够将作业的执行程序分配给一个环境变量,该环境变量可以传递给其他脚本或由其他脚本使用。
当前回答
我们使用groovy作业文件:
description('')
steps {
environmentVariables {
envs(PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true)
}
}
其他回答
我们使用的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插入。
扩展@JSixface的答案:
若要在声明式管道的所有阶段内全局定义环境变量,以便进行访问,可以在管道块中添加环境部分。
pipeline {
agent {
node {
label 'myAgent'
}
}
environment {
AOEU = "${sh(returnStdout: true, script: 'echo aoeu').trim()}"
}
stages {
...
}
}
你可以尝试这样做
stages {
stage('Build') {
environment {
AOEU= sh (returnStdout: true, script: 'echo aoeu').trim()
}
steps {
sh 'env'
sh 'echo $AOEU'
}
}
}
在我的例子中,我需要添加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
在我的例子中,我使用以下选项配置环境变量,它工作了-
Manage Jenkins -> Configure System -> Global Properties -> Environment Variables -> Add