[jenkins] 젠킨스 파이프 라인 작업 내에서 모든`env` 속성을 나열하는 방법은 무엇입니까?

jenkins 2.1 빌드 파이프 라인이 주어지면 jenkins envnode{}. 예를 들어 다음 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/ batstep 및 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
}