如何列出jenkinspipe道作业中的所有`env`属性?
鉴于jenkins 2.1构buildpipe道,jenkins将env
variables注入到node{}
。 例如, BRANCH_NAME
可以通过访问
node { echo ${env.BRANCH_NAME} ...
我想要回显jenkinspipe道中的所有 env
属性。
我正在寻找类似的代码
node { for(e in env){ echo e + " is " + ${e} } ...
这将回应类似的东西
BRANCH_NAME is myBranch2 CHANGE_ID is 44 ...
另一种更简洁的方式:
node { echo sh(returnStdout: true, script: 'env') // ... }
比照 https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script
根据Jenkins关于声明式pipe道的 文档 :
sh 'printenv'
对于jenkins脚本pipe道 :
echo sh(script: 'env|sort', returnStdout: true)
上述也为了方便您的env varssorting。
您可以使用sh
/ bat
步骤和readFile
完成结果:
node { sh 'env > env.txt' readFile('env.txt').split("\r?\n").each { println it } }
不幸的是, env.getEnvironment()
返回非常有限的环境variables映射。
以下工作:
@NonCPS def printParams() { env.getEnvironment().each { name, value -> println "Name: $name -> Value $value" } } printParams()
请注意,它很可能会在首次执行时失败,并且需要您批准各种常规方法才能在jenkins沙箱中运行。 这是在“pipe理jenkins /进程内脚本审批”
我得到的名单包括:
- BUILD_DISPLAY_NAME
- BUILD_ID
- BUILD_NUMBER
- BUILD_TAG
- BUILD_URL
- CLASSPATH
- HUDSON_HOME
- HUDSON_SERVER_COOKIE
- HUDSON_URL
- JENKINS_HOME
- JENKINS_SERVER_COOKIE
- JENKINS_URL
- JOB_BASE_NAME
- JOB_NAME
- JOB_URL
我使用蓝色海洋插件,并不喜欢每个环境条目获得自己的块。 我想要一块所有的线。
打印不好:
sh 'echo `env`'
打印不好:
sh 'env > env.txt' for (String i : readFile('env.txt').split("\r?\n")) { println i }
打印好:
sh 'env > env.txt' sh 'cat env.txt'
印好:(如@mjfroehlich所述)
echo sh(script: 'env', returnStdout: true)
上面的答案由于新的stream水线语法而过时了。 下面打印出环境variables。
script { sh 'env > env.txt' String[] envs = readFile('env.txt').split("\r?\n") for(String vars: envs){ println(vars) } }
另一种方法来获得问题中提到的输出:
envtext= "printenv".execute().text envtext.split('\n').each { envvar=it.split("=") println envvar[0]+" is "+envvar[1] }
这可以很容易地扩展到build立一个符合条件的env vars子集的映射:
envdict=[:] envtext= "printenv".execute().text envtext.split('\n').each { envvar=it.split("=") if (envvar[0].startsWith("GERRIT_")) envdict.put(envvar[0],envvar[1]) } envdict.each{println it.key+" is "+it.value}