鉴于jenkins 2.1构建管道,jenkins将env
变量注入node{}
。例如,可以使用
BRANCH_NAME
node {
echo ${env.BRANCH_NAME}
...
env
属性。我正在寻找像
这样的代码node {
for(e in env){
echo e + " is " + ${e}
}
...
会回应像
这样的东西 BRANCH_NAME is myBranch2
CHANGE_ID is 44
...
答案 0 :(得分:70)
另一种更简洁的方式:
node {
echo sh(returnStdout: true, script: 'env')
// ...
}
比照https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script
答案 1 :(得分:59)
根据Jenkins documentation的declarative pipeline:
sh 'printenv'
对于詹金斯scripted pipeline:
echo sh(script: 'env|sort', returnStdout: true)
为方便起见,上面也对你的env vars进行了分类。
答案 2 :(得分:14)
以下作品:
@NonCPS
def printParams() {
env.getEnvironment().each { name, value -> println "Name: $name -> Value $value" }
}
printParams()
请注意,它很可能在首次执行时失败,并且需要您批准各种groovy方法才能在jenkins沙箱中运行。这是在"管理jenkins /进程内脚本批准"
中完成的我收到的清单:
答案 3 :(得分:14)
您可以使用sh
/ bat
步骤和readFile
完成结果:
node {
sh 'env > env.txt'
readFile('env.txt').split("\r?\n").each {
println it
}
}
不幸的是env.getEnvironment()
返回非常有限的环境变量图。
答案 4 :(得分:7)
为什么这么复杂?
sh 'env'
满足您的需求(在* nix下)
答案 5 :(得分:7)
这是一个快速脚本,您可以添加为管道作业以列出所有环境变量:
node {
echo(env.getEnvironment().collect({environmentVariable -> "${environmentVariable.key} = ${environmentVariable.value}"}).join("\n"))
echo(System.getenv().collect({environmentVariable -> "${environmentVariable.key} = ${environmentVariable.value}"}).join("\n"))
}
这将列出系统和Jenkins变量。
答案 6 :(得分:6)
我使用Blue Ocean插件,并不喜欢每个环境条目都有自己的块。我希望一个块包含所有行。
打印效果不佳:
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)
答案 7 :(得分:4)
读取全局env
变量的 Pure Groovy 解决方案不会打印所有环境变量(例如,它们丢失了environment
块,{{1 }}上下文以及操作系统中大多数机器特定的变量)。使用shell步骤可以得到更完整的集合,但这需要一个withEnv
上下文,而这并非总是需要的。
这是一个解决方案,它使用getContext
步骤来检索和打印当前上下文的完整环境变量集,包括管道参数。
注意事项:在Groovy沙箱中不起作用。不过,您可以从受信任的共享库中使用它。
node
答案 8 :(得分:3)
由于新的管道语法,上面的答案现已过时。下面打印出环境变量。
script {
sh 'env > env.txt'
String[] envs = readFile('env.txt').split("\r?\n")
for(String vars: envs){
println(vars)
}
}
答案 9 :(得分:3)
列出所有环境变量的跨平台方式:
if (isUnix()) {
sh env
}
else {
bat set
}
答案 10 :(得分:3)
最简单快捷的方法是使用以下网址打印所有环境变量
http://localhost:8080/env-vars.html/
答案 11 :(得分:1)
如果您真的想遍历env
列表,请执行以下操作:
def envs = sh(returnStdout: true, script: 'env').split('\n')
envs.each { name ->
println "Name: $name"
}
答案 12 :(得分:0)
另一种获得问题中提到的输出的方法:
envtext= "printenv".execute().text
envtext.split('\n').each
{ envvar=it.split("=")
println envvar[0]+" is "+envvar[1]
}
这可以很容易地扩展为使用符合条件的env变量子集构建地图:
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}
答案 13 :(得分:0)
答案 14 :(得分:0)
我发现这是最简单的方法:
pipeline {
agent {
node {
label 'master'
}
}
stages {
stage('hello world') {
steps {
sh 'env'
}
}
}
}
答案 15 :(得分:0)
显示所有变量在Windows系统和Unix系统中是不同的,您可以定义一个函数来每次调用它。
def showSystemVariables(){
if(isUnix()){
sh 'env'
} else {
bat 'set'
}
}
我将首先调用此函数以显示所有pipline脚本中的所有变量
stage('1. Show all variables'){
steps {
script{
showSystemVariables()
}
}
}
答案 16 :(得分:0)
参考:https://www.jenkins.io/doc/pipeline/tour/environment/
node {
sh 'printenv'
}
答案 17 :(得分:-1)
您可以从jenkins实例中获取所有变量。只需访问: