티스토리 뷰

선언적 파이프 라인에 대한 Jenkins 문서따르면 :

sh 'printenv'

Jenkins 스크립트 파이프 라인의 경우 :

echo sh(script: 'env|sort', returnStdout: true)

위는 편의를 위해 환경 변수도 정렬합니다.

-------------------

더 간결한 또 다른 방법 :

node {
    echo sh(returnStdout: true, script: 'env')
        // ...
        }
        

cf. https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script

-------------------

다음 작업 :

@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
        }
        
-------------------

나는 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)
-------------------

순수 그루비 글로벌 읽어 솔루션 env모든 환경 변수를 인쇄하지 않는 변수 (예를 들어, 그들은에서 변수를 누락 environment에서, 블록 withEnv컨텍스트와 OS에서 시스템 특정 변수의 대부분). 쉘 단계를 사용하면 더 완전한 세트를 얻을 수 있지만 node컨텍스트 가 필요하며 항상 원하지는 않습니다.

다음은 getContext현재 컨텍스트에 대해 파이프 라인 매개 변수를 포함한 전체 환경 변수 세트를 검색하고 인쇄 하는 단계를 사용하는 솔루션입니다 .

주의 사항 : Groovy 샌드 박스에서는 작동하지 않습니다. 하지만 신뢰할 수있는 공유 라이브러리에서 사용할 수 있습니다.

def envAll = getContext( hudson.EnvVars )
echo envAll.collect{ k, v -> "$k = $v" }.join('\n')
-------------------

위의 답변은 이제 새로운 파이프 라인 구문으로 인해 구식입니다. 아래는 환경 변수를 인쇄합니다.

script {
        sh 'env > env.txt'
                String[] envs = readFile('env.txt').split("\r?\n")
                
                        for(String vars: envs){
                                    println(vars)
                                            }
                                                }
                                                
-------------------

윈도우 시스템과 유닉스 시스템에서 모든 변수를 보여주기는 다르며, 매번 호출하는 함수를 정의 할 수 있습니다.

def showSystemVariables(){    
   if(isUnix()){
        sh 'env'
           } else {
                bat 'set'
                   }
                   }
                   

이 함수를 먼저 호출하여 모든 pipline 스크립트의 모든 변수를 표시합니다.

stage('1. Show all variables'){
     steps {
              script{            
                            showSystemVariables()
                                     }
                                          }
                                          } 
                                          
-------------------

정말로 env목록 을 반복하고 싶다면 다음을 수행하십시오.

def envs = sh(returnStdout: true, script: 'env').split('\n')
envs.each { name  ->
    println "Name: $name"
    }
    
-------------------

질문에 언급 된 출력을 정확히 얻는 또 다른 방법 :

envtext= "printenv".execute().text
envtext.split('\n').each
{   envvar=it.split("=")
    println envvar[0]+" is "+envvar[1]
    }
    

기준과 일치하는 환경 변수의 하위 집합으로 맵을 빌드하도록 쉽게 확장 할 수 있습니다.

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}
            
-------------------

스크립트 형태로 필요하다고 생각하지만 다른 사람이 Jenkins GUI를 통해 살펴보고자하는 경우 모든 빌드의 상황에 맞는 왼쪽 메뉴에서 "환경 변수"섹션을 선택하여 해당 목록을 찾을 수 있습니다. 프로젝트 선택 = > 빌드 선택 => 환경 변수

여기에 이미지 설명 입력

-------------------

이것이 가장 쉬운 방법이라는 것을 알았습니다.

pipeline {
    agent {
            node {
                        label 'master'
                                }
                                    }   
                                        stages {
                                                stage('hello world') {
                                                            steps {
                                                                            sh 'env'
                                                                                        }
                                                                                                }
                                                                                                    }
                                                                                                    }
                                                                                                    
-------------------

젠킨스 인스턴스에서 모든 변수를 가져올 수 있습니다. 다음을 방문하십시오.

  • $ {jenkins_host} /env-vars.html
  • $ {jenkins_host} / pipeline-syntax / globals


출처
https://stackoverflow.com/questions/39914878
댓글
공지사항
Total
Today
Yesterday
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31