Jenkins - Meneruskan parameter ke fungsi groovy
Saya sudah mencoba memanggil fungsi groovy lain dengan parameter di dalam pipeline saya tanpa hasil.
Fungsi groovy yang saya berikan parameter terdiri dari skrip bash, tetapi skrip bash ini tidak mengenali parameter yang saya berikan. Namun, jika parameter yang dilewatkan oleh i didefinisikan sebagai a parameters {}
di dalam pipa, maka itu berfungsi, tetapi saya tidak menginginkan ini.
MASALAH:
Skrip shell tidak mengenali / memahami argumen, variabel kosong, tidak ada nilai.
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...
}
OUTPUT DARI PIPA DENGAN PARAMETER:
MY values Peace and Space
OUTPUT DARI PIPA TANPA PARAMETER:
MY values and
Saya telah mencoba menggunakan environment{}
kata kunci seperti yang disarankan dalam pertanyaan saya sebelumnya, tanpa hasil. Jenkins - lingkungan
Saya menyadari bahwa ada masalah serupa di luar sana:
- Meneruskan variabel groovy ke skrip shell
- Cara menetapkan variabel groovy ke variabel shell
- Parameter Jenkins
CATATAN: Ini dekat dengan duplikat dari parameter Shell quesiton pertanyaan saya Jenkins
Terima kasih.
Jawaban
DIPERBARUI
Saya telah memperbarui jawaban untuk menggunakan variabel lingkungan tanpa harus environment {}
Gunakan variabel lingkungan seperti yang saya gunakan di sini (saya refactored kode Anda sedikit):
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
dan env.VARENV2
merupakan variabel lingkungan yang saya gunakan di sini di dalam script{}
. Anda dapat memberikan nilai pada mereka.
Ini adalah keluaran baru saya:

Saya sangat berharap ini membantu.
PEMBARUAN PENGGUNAAN UNTUK LOOP
Menggunakan tiga tanda kutip tunggal untuk skrip shell untuk loop dan menambahkan variabel grrovy padanya:
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()
}
}
}
}
KELUARAN:
