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
...
답변
더 간결한 또 다른 방법 :
node {
echo sh(returnStdout: true, script: 'env')
// ...
}
cf. https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script
답변
선언적 파이프 라인에 대한 Jenkins 문서 에 따르면 :
sh 'printenv'
Jenkins 스크립트 파이프 라인의 경우 :
echo sh(script: 'env|sort', returnStdout: true)
위의 내용은 편의를 위해 환경 변수도 정렬합니다.
답변
다음 작업 :
@NonCPS
def printParams() {
env.getEnvironment().each { name, value -> println "Name: $name -> Value $value" }
}
printParams()
첫 번째 실행에서 실패 할 가능성이 높으며 젠킨스 샌드 박스에서 실행할 다양한 그루비 메서드를 승인해야합니다. 이것은 “젠킨스 / 진행중인 스크립트 승인 관리”에서 수행됩니다.
내가 포함 된 목록 :
- BUILD_DISPLAY_NAME
- BUILD_ID
- 빌드 번호
- BUILD_TAG
- BUILD_URL
- CLASSPATH
- HUDSON_HOME
- HUDSON_SERVER_COOKIE
- HUDSON_URL
- JENKINS_HOME
- JENKINS_SERVER_COOKIE
- JENKINS_URL
- JOB_BASE_NAME
- 직업 이름
- JOB_URL
답변
sh
/ bat
step 및 readFile
다음을 사용하여 결과를 얻을 수 있습니다 .
node {
sh 'env > env.txt'
readFile('env.txt').split("\r?\n").each {
println it
}
}
불행히도 env.getEnvironment()
매우 제한된 환경 변수 맵을 반환합니다.
답변
왜 이렇게 복잡합니까?
sh 'env'
(* nix에서) 필요한 작업을 수행합니다.
답변
다음은 모든 환경 변수를 나열하기 위해 파이프 라인 작업으로 추가 할 수있는 빠른 스크립트입니다.
node {
echo(env.getEnvironment().collect({environmentVariable -> "${environmentVariable.key} = ${environmentVariable.value}"}).join("\n"))
echo(System.getenv().collect({environmentVariable -> "${environmentVariable.key} = ${environmentVariable.value}"}).join("\n"))
}
그러면 시스템 및 Jenkins 변수가 모두 나열됩니다.
답변
모든 환경 변수를 나열하는 크로스 플랫폼 방식 :
if (isUnix()) {
sh env
}
else {
bat set
}
