Jenkins-groovy 함수에 매개 변수 전달
운없이 파이프 라인 내부에 매개 변수가있는 또 다른 멋진 함수를 호출하려고했습니다.
매개 변수를 전달하는 그루비 함수는 bash 스크립트로 구성되어 있지만이 bash 스크립트는 내가 전달하는 매개 변수를 인식하지 못합니다. 그러나 i가 전달한 매개 변수 parameters {}
가 파이프 라인에서 a 로 정의 된 경우 작동하지만 원하지 않습니다.
문제 :
쉘 스크립트가 인수를 인식 / 이해하지 못하고 변수가 비어 있고 값이 없습니다.
pipelineJenkins.groovy
def call {
pipeline {
parameters {
string (name: VAR1, defaultValue: "Peace", description: '' } <--- This works, but not beneficial
string (name: VAR2, defaultValue: "Space", description: '' } <--- This works, but not beneficial
stages {
stage ('Run script') {
steps {
groovyFunction("${VAR1}", "${VAR2}")
groovyFunction("Peace", "Space") <--- WHAT I WANT
}
}
}
}
}
groovyFunction.groovy
def call(var1, var2) {
sh 'echo MY values ${var1} and ${var2}'
sh "echo MY values ${var1} and ${var2}" <-- Works using double quotes, this messes up sed and for-loops...
}
매개 변수가있는 파이프 라인의 출력 :
MY values Peace and Space
매개 변수없이 파이프 라인에서 출력 :
MY values and
environment{}
운없이 이전 질문에서 제안한 키워드를 사용해 보았습니다 . Jenkins-환경
비슷한 문제가 있다는 것을 알고 있습니다.
- 그루비 변수를 쉘 스크립트에 전달
- 그루비 변수를 쉘 변수에 할당하는 방법
- Jenkins 매개 변수
참고 : 이것은 내 요청 된 quesiton Shell 매개 변수 Jenkins 의 복제본에 가깝습니다.
감사.
답변
업데이트 됨
환경 변수를 사용하지 않고 답변을 업데이트했습니다. environment {}
여기에서 사용한 것과 같은 환경 변수를 사용하십시오 (코드를 약간 리팩토링했습니다).
def callfunc() {
sh 'echo MY values $VARENV1 and $VARENV2'
}
pipeline {
agent { label 'agent_1' }
stages {
stage ('Run script') {
steps {
script {
env.VARENV1 = "Peace"
env.VARENV2 = "Space"
}
callfunc()
}
}
}
}
env.VARENV1
그리고 env.VARENV2
내가 여기서 사용한 환경 변수 script{}
입니다. 여기에 값을 할당 할 수 있습니다.
이것은 내 새로운 출력입니다.

정말 도움이 되었기를 바랍니다.
루프에 사용하기위한 업데이트
루프 용 쉘 스크립트에 삼중 작은 따옴표를 사용하고 grrovy 변수를 추가합니다.
def callfunc() {
sh '''
export s="key"
echo $s for i in $VARENV1
do
echo "Looping ... i is set to $i"
done
'''
}
pipeline {
agent { label 'agent_1' }
stages {
stage ('Run script') {
steps {
script {
env.VARENV1 = "Peace"
}
callfunc()
}
}
}
}
산출:
