I want to change from scripted pipeline script to declarative pipeline script.
But I have one problem defaultValue of input cannot change value in case of declarative pipeline script. Below is the scripted pipeline script I want to change from. ---- def value1 = 'initial value' node { label 'master' stage('prediction') { value1 = sh(script: 'echo predicted value', returnStdout: true).trim() } } def setting stage('setting') { setting = input(parameters: [string(name: 'value2', defaultValue: value1)]) } stage('execution') { build(job: 'job', parameters: [string(name: 'value2', value: setting)]) } ---- The prompted value in input step is "predicted value" as I exected. Below is the failing declarative pipeline script I tried. ---- def value1 = 'initial value' pipeline { agent none stages { stage('prediction') { agent { label 'master' } steps { script { value1 = sh(script: 'echo predicted value', returnStdout: true).trim() } } } stage('execution') { input { message 'setting' parameters { string(name: 'value2', defaultValue: value1) } } steps { build(job: 'job', parameters: [string(name: 'value2', value: value2)]) } } } } ---- The prompted value is "initial value" as I don't expect. What I want to make with a script is the following three steps. 1. get "predicted value" using shell script in the git repository. 2. prompt "predicted value" and decide value. 3. run the job with decided value. How to change defaultValue of input in case of declarative pipeline script? Kiyoshi Ohgishi -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/3cd83b52-7c00-4276-ba2b-5ba0188c0301n%40googlegroups.com. |
You can try with environment variables or the Field annotation as shown below
import groovy.transform.Field @Field def value1 = 'initial value' On Wednesday, 25 November 2020 at 19:00:24 UTC Kiyoshi Ohgishi wrote: I want to change from scripted pipeline script to declarative pipeline script. You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/fde53fb1-ebf7-46a0-acc2-aafa0b11cf70n%40googlegroups.com. |
Thank you for your advice.
I tried the following script. import groovy.transform.Field @Field def value1 = 'initial value' But the prompted value is "initial value" , which is the same value as before. 2020年11月26日木曜日 23:05:50 UTC+9 [hidden email]: You can try with environment variables or the Field annotation as shown below You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/58c0b7e4-4083-40b2-940a-ff32b8b11c53n%40googlegroups.com. |
I don't understand why your example do not work, but I was recently confronted to this bug : https://issues.jenkins.io/browse/JENKINS-42360 This changed my way of thinking : stop use groovy var, use environment, everywhere, always. Maybe you could try to set your variable as env var : env['VALUE_NAME'] = 'value' and use it with env.VALUE_NAME. I think that using env var is a more "standard" way of doing, especially in declarative pipelines. I even use a "setEnv" function in /vars to ease the process without the need of script closure. Hope this helps On Sun, Nov 29, 2020 at 3:39 PM Kiyoshi Ohgishi <[hidden email]> wrote: Thank you for your advice. Yannick LACAUTE Consultant indépendant 39 rue de Wattignies, 75012 Paris Tel : 06 16 85 95 76 You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CAG1W_AxkS%2Bd4sTsJWShvC4SeLDLWB%2BLvVe65JpXDRDrX2JoaEQ%40mail.gmail.com. |
Thank you for your advice.
I tried the following script. ---- env['value1'] = 'initial value' pipeline { agent none stages { stage('prediction') { agent { label 'master' } steps { script { env['value1'] = sh(script: 'echo predicted value', returnStdout: true).trim() } } } stage('execution') { input { message 'setting' parameters { string(name: 'value2', defaultValue: env['value1']) string(name: 'value3', defaultValue: env.value1) } } steps { build(job: 'job', parameters: [string(name: 'value4', value: env.value1), string(name: 'value5', value: env['value1'])]) } } } } ----
Both parameters 'value4' and 'value5' were 'predicted value'. '
defaultValue' seems to be evaluated only when loading.
2020年11月30日月曜日 1:56:10 UTC+9 [hidden email]:
You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/90f1d477-e049-41c1-92e0-218915b02372n%40googlegroups.com. |
Free forum by Nabble | Edit this page |