Jam*_*979 88 groovy jenkins jenkins-pipeline
鉴于jenkins 2.1构建管道,jenkins将一个env
变量注入到node{}
.例如,BRANCH_NAME
可以使用
node {
echo ${env.BRANCH_NAME}
...
Run Code Online (Sandbox Code Playgroud)
env
属性.我正在寻找像这样的代码
node {
for(e in env){
echo e + " is " + ${e}
}
...
Run Code Online (Sandbox Code Playgroud)
这会像回应一样
BRANCH_NAME is myBranch2
CHANGE_ID is 44
...
Run Code Online (Sandbox Code Playgroud)
小智 79
另一种更简洁的方式:
node {
echo sh(returnStdout: true, script: 'env')
// ...
}
Run Code Online (Sandbox Code Playgroud)
比照 https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script
Wim*_*eka 72
sh 'printenv'
Run Code Online (Sandbox Code Playgroud)
对于Jenkins 脚本管道:
echo sh(script: 'env|sort', returnStdout: true)
Run Code Online (Sandbox Code Playgroud)
为方便起见,上面还对您的env vars进行了排序.
Omr*_*tor 20
以下作品:
@NonCPS
def printParams() {
env.getEnvironment().each { name, value -> println "Name: $name -> Value $value" }
}
printParams()
Run Code Online (Sandbox Code Playgroud)
请注意,它很可能在第一次执行时失败,并且需要您批准各种groovy方法才能在jenkins沙箱中运行.这是在"管理jenkins /进程内脚本批准"中完成的
我得到的清单包括:
luk*_*a5z 14
您可以使用sh
/ bat
步骤完成结果readFile
:
node {
sh 'env > env.txt'
readFile('env.txt').split("\r?\n").each {
println it
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,env.getEnvironment()
返回非常有限的环境变量图.
And*_*tov 10
为什么这么复杂?
sh 'env'
Run Code Online (Sandbox Code Playgroud)
做你需要的(在* nix下)
这是一个快速脚本,您可以添加为管道作业以列出所有环境变量:
node {
echo(env.getEnvironment().collect({environmentVariable -> "${environmentVariable.key} = ${environmentVariable.value}"}).join("\n"))
echo(System.getenv().collect({environmentVariable -> "${environmentVariable.key} = ${environmentVariable.value}"}).join("\n"))
}
Run Code Online (Sandbox Code Playgroud)
这将列出系统和Jenkins变量.
读取全局变量的纯 Groovy解决方案env
不会打印所有环境变量(例如,它们缺少environment
块中的变量、withEnv
上下文中的变量以及操作系统中大多数特定于机器的变量)。使用 shell 步骤可以获得更完整的集合,但这需要node
上下文,这并不总是需要的。
这是一个解决方案,它使用该getContext
步骤来检索和打印当前上下文的完整环境变量集,包括管道参数。
警告:在 Groovy 沙箱中不起作用。不过,您可以从受信任的共享库中使用它。
def envAll = getContext( hudson.EnvVars )
echo envAll.collect{ k, v -> "$k = $v" }.join('\n')
Run Code Online (Sandbox Code Playgroud)
我使用Blue Ocean插件并不喜欢每个环境条目都有自己的块.我想要一个包含所有线条的块.
打印效果不佳:
sh 'echo `env`'
Run Code Online (Sandbox Code Playgroud)
打印效果不佳:
sh 'env > env.txt'
for (String i : readFile('env.txt').split("\r?\n")) {
println i
}
Run Code Online (Sandbox Code Playgroud)
打印好:
sh 'env > env.txt'
sh 'cat env.txt'
Run Code Online (Sandbox Code Playgroud)
打印得很好:(如@mjfroehlich所述)
echo sh(script: 'env', returnStdout: true)
Run Code Online (Sandbox Code Playgroud)
小智 6
显示所有变量在Windows系统和Unix系统中是不同的,你可以定义一个函数来每次调用它。
def showSystemVariables(){
if(isUnix()){
sh 'env'
} else {
bat 'set'
}
}
Run Code Online (Sandbox Code Playgroud)
我将首先调用此函数来显示所有 pipline 脚本中的所有变量
stage('1. Show all variables'){
steps {
script{
showSystemVariables()
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
111869 次 |
最近记录: |