Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-35698

Initial run of parameterized pipeline build should return properties default value

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      colored textOn the first build the config parameter doesn't exist but it'd be great if on this initial build Config parameter could be setup with the default value.

      For example,

      properties ([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'StringParameterDefinition', defaultValue: 'Release', description: '', name: 'configParam']]]]) 
      

      So

      binding.hasVariable('configParameter') should return true, and should has the value Release

        Attachments

          Issue Links

            Activity

            escoem Emilio Escobar created issue -
            jglick Jesse Glick made changes -
            Field Original Value New Value
            Description On the first build the config parameter doesn't exist but it'd be great if on this initial build Config parameter could be setup with the default value.

            For example,

            properties ([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'StringParameterDefinition', defaultValue: 'Release', description: '', name: 'configParam']]]])

            So

            binding.hasVariable('configParameter') should return true, and should has the value 'Release'
            On the first build the config parameter doesn't exist but it'd be great if on this initial build Config parameter could be setup with the default value.

            For example,

            {code}
            properties ([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'StringParameterDefinition', defaultValue: 'Release', description: '', name: 'configParam']]]])
            {code}

            So

            {{binding.hasVariable('configParameter')}} should return true, and should has the value {{Release}}
            Labels multibranch
            Hide
            jglick Jesse Glick added a comment -

            As shown here there is a workaround which probably just needs to make it into documentation. The requested behavior is not even theoretically possible.

            Show
            jglick Jesse Glick added a comment - As shown here there is a workaround which probably just needs to make it into documentation. The requested behavior is not even theoretically possible.
            jglick Jesse Glick made changes -
            Link This issue is related to JENKINS-27295 [ JENKINS-27295 ]
            Hide
            jglick Jesse Glick added a comment -

            An implementation of JENKINS-27295 using a parameters virtual map could be designed to check for default values in ParametersDefinitionProperty even for keys not mentioned in ParametersAction, which would allow this to work on the first build:

            properties([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'StringParameterDefinition', name: 'mode', defaultValue: 'normal']]]])
            assert parameters.mode == 'normal'
            
            Show
            jglick Jesse Glick added a comment - An implementation of JENKINS-27295 using a parameters virtual map could be designed to check for default values in ParametersDefinitionProperty even for keys not mentioned in ParametersAction , which would allow this to work on the first build: properties([[$class: 'ParametersDefinitionProperty' , parameterDefinitions: [[$class: 'StringParameterDefinition' , name: 'mode' , defaultValue: 'normal' ]]]]) assert parameters.mode == 'normal'
            Hide
            mtraynham Matt Traynham added a comment -

            Hey Jesse Glick, your workaround sort of fixes this for initial runs, but it fails when a Jenkinsfile "properties" has changed (maybe from a merge) and a subsequent run will use the old properties. This can cause jobs to fail or have undesired results. I imagine, based on the tutorials I've viewed and my own Jenkinsfile, that properties will likely always come at the beginning of the pipeline. So if the properties function could return a map, I think this would be much more straightforward, rather than injecting them into the binding (not a big Groovy user, but I think that's what it's doing).

            Show
            mtraynham Matt Traynham added a comment - Hey Jesse Glick , your workaround sort of fixes this for initial runs, but it fails when a Jenkinsfile "properties" has changed (maybe from a merge) and a subsequent run will use the old properties. This can cause jobs to fail or have undesired results. I imagine, based on the tutorials I've viewed and my own Jenkinsfile, that properties will likely always come at the beginning of the pipeline. So if the properties function could return a map, I think this would be much more straightforward, rather than injecting them into the binding (not a big Groovy user, but I think that's what it's doing).
            rtyler R. Tyler Croy made changes -
            Workflow JNJira [ 172124 ] JNJira + In-Review [ 184573 ]
            abayer Andrew Bayer made changes -
            Component/s pipeline-general [ 21692 ]
            abayer Andrew Bayer made changes -
            Component/s workflow-plugin [ 18820 ]
            jglick Jesse Glick made changes -
            Component/s workflow-multibranch-plugin [ 21465 ]
            Component/s pipeline [ 21692 ]
            jglick Jesse Glick made changes -
            Labels multibranch
            jglick Jesse Glick made changes -
            Remote Link This issue links to "workflow-multibranch PR 34 (Web Link)" [ 14921 ]
            Hide
            jglick Jesse Glick added a comment -

            it fails when a Jenkinsfile "properties" has changed […] and a subsequent run will use the old properties

            When properties is run, it changes the properties for the job. In the case of build parameters, these are consulted before the build starts, thus use the parameters defined as of the previous build. This issue is about allowing params to pay attention to the current definition.

            Show
            jglick Jesse Glick added a comment - it fails when a Jenkinsfile "properties" has changed […] and a subsequent run will use the old properties When properties is run, it changes the properties for the job. In the case of build parameters, these are consulted before the build starts, thus use the parameters defined as of the previous build. This issue is about allowing params to pay attention to the current definition.
            jglick Jesse Glick made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            jglick Jesse Glick made changes -
            Component/s workflow-cps-plugin [ 21713 ]
            jglick Jesse Glick made changes -
            Remote Link This issue links to "workflow-cps PR 73 (Web Link)" [ 14935 ]
            jglick Jesse Glick made changes -
            Remote Link This issue links to "workflow-multibranch PR 36 (Web Link)" [ 14936 ]
            jglick Jesse Glick made changes -
            Status In Progress [ 3 ] In Review [ 10005 ]
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            src/main/java/org/jenkinsci/plugins/workflow/cps/ParamsVariable.java
            src/main/resources/org/jenkinsci/plugins/workflow/cps/ParamsVariable/help.jelly
            http://jenkins-ci.org/commit/workflow-cps-plugin/0161aecc2877ec4c7086c1bce7d0c69f42e6c267
            Log:
            [FIXED JENKINS-35698] Make params offer default parameter values from the current definition as a fallback.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: src/main/java/org/jenkinsci/plugins/workflow/cps/ParamsVariable.java src/main/resources/org/jenkinsci/plugins/workflow/cps/ParamsVariable/help.jelly http://jenkins-ci.org/commit/workflow-cps-plugin/0161aecc2877ec4c7086c1bce7d0c69f42e6c267 Log: [FIXED JENKINS-35698] Make params offer default parameter values from the current definition as a fallback.
            jglick Jesse Glick made changes -
            Resolution Fixed [ 1 ]
            Status In Review [ 10005 ] Resolved [ 5 ]
            xmiklis Mika Karjalainen made changes -
            Link This issue is duplicated by JENKINS-37330 [ JENKINS-37330 ]
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            pom.xml
            src/test/java/org/jenkinsci/plugins/workflow/multibranch/JobPropertyStepTest.java
            http://jenkins-ci.org/commit/workflow-multibranch-plugin/9acfbdf2144180a7ff2a03efc43f484f157a161b
            Log:
            JENKINS-35698 Integration test for params fallback behavior.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: pom.xml src/test/java/org/jenkinsci/plugins/workflow/multibranch/JobPropertyStepTest.java http://jenkins-ci.org/commit/workflow-multibranch-plugin/9acfbdf2144180a7ff2a03efc43f484f157a161b Log: JENKINS-35698 Integration test for params fallback behavior.
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            pom.xml
            src/test/java/org/jenkinsci/plugins/workflow/multibranch/JobPropertyStepTest.java
            http://jenkins-ci.org/commit/workflow-multibranch-plugin/56d24dcc10d6decfb6fc2904216543851adb82b4
            Log:
            Merge pull request #36 from jglick/params-default-JENKINS-35698

            JENKINS-35698 Integration test for params fallback behavior

            Compare: https://github.com/jenkinsci/workflow-multibranch-plugin/compare/3f1a413631dc...56d24dcc10d6

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: pom.xml src/test/java/org/jenkinsci/plugins/workflow/multibranch/JobPropertyStepTest.java http://jenkins-ci.org/commit/workflow-multibranch-plugin/56d24dcc10d6decfb6fc2904216543851adb82b4 Log: Merge pull request #36 from jglick/params-default- JENKINS-35698 JENKINS-35698 Integration test for params fallback behavior Compare: https://github.com/jenkinsci/workflow-multibranch-plugin/compare/3f1a413631dc...56d24dcc10d6
            gpkirk01 Geoff Kirk made changes -
            Description On the first build the config parameter doesn't exist but it'd be great if on this initial build Config parameter could be setup with the default value.

            For example,

            {code}
            properties ([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'StringParameterDefinition', defaultValue: 'Release', description: '', name: 'configParam']]]])
            {code}

            So

            {{binding.hasVariable('configParameter')}} should return true, and should has the value {{Release}}
            {color:red}colored text{color}On the first build the config parameter doesn't exist but it'd be great if on this initial build Config parameter could be setup with the default value.

            For example,

            {code}
            properties ([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'StringParameterDefinition', defaultValue: 'Release', description: '', name: 'configParam']]]])
            {code}

            So

            {{binding.hasVariable('configParameter')}} should return true, and should has the value {{Release}}
            Hide
            ahuntpindrop Alex Hunt added a comment -

            What version of the plugins is this fixed in? This still seems to be a problem.

            We're using the following plugins:

            ace-editor:1.1
            active-directory:2.0
            ant:1.4
            antisamy-markup-formatter:1.5
            artifactory:2.8.1
            authentication-tokens:1.3
            aws-credentials:1.16
            aws-java-sdk:1.11.37
            bouncycastle-api:2.16.0
            branch-api:1.11.1
            build-timeout:1.18
            cloudbees-folder:5.13
            cobertura:1.9.8
            conditional-buildstep:1.3.5
            config-file-provider:2.13
            credentials:2.1.10
            credentials-binding:1.10
            cucumber-testresult-plugin:0.9.7
            datadog:0.5.5
            display-url-api:0.5
            docker-commons:1.5
            docker-custom-build-environment:1.6.5
            docker-workflow:1.9.1
            durable-task:1.12
            ec2:1.36
            email-ext:2.52
            embeddable-build-status:1.9
            envinject:1.93.1
            external-monitor-job:1.6
            git:3.0.1
            git-client:2.1.0
            github:1.24.0
            github-api:1.80
            github-branch-source:1.10.1
            github-organization-folder:1.5
            git-server:1.7
            global-build-stats:1.4
            gradle:1.25
            handlebars:1.1.1
            htmlpublisher:1.11
            icon-shim:2.0.3
            ivy:1.26
            jackson2-api:2.7.3
            javadoc:1.4
            jquery-detached:1.2.1
            junit:1.19
            ldap:1.13
            mailer:1.18
            mapdb-api:1.0.9.0
            matrix-auth:1.4
            matrix-project:1.7.1
            maven-plugin:2.14
            momentjs:1.1.1
            node-iterator-api:1.5
            pam-auth:1.3
            parallel-test-executor:1.9
            parameterized-trigger:2.32
            pipeline-build-step:2.4
            pipeline-graph-analysis:1.2
            pipeline-input-step:2.5
            pipeline-milestone-step:1.2
            pipeline-rest-api:2.3
            pipeline-stage-step:2.2
            pipeline-stage-view:2.3
            plain-credentials:1.3
            resource-disposer:0.3
            run-condition:1.0
            scm-api:1.3
            script-security:1.24
            slack:2.1
            ssh-agent:1.13
            ssh-credentials:1.12
            ssh-slaves:1.11
            structs:1.5
            subversion:2.7.1
            swarm:2.2
            timestamper:1.8.7
            token-macro:2.0
            windows-slaves:1.2
            workflow-aggregator:2.4
            workflow-api:2.6
            workflow-basic-steps:2.3
            workflow-cps:2.23
            workflow-cps-global-lib:2.5
            workflow-durable-task-step:2.5
            workflow-job:2.9
            workflow-multibranch:2.9.2
            workflow-scm-step:2.3
            workflow-step-api:2.5
            workflow-support:2.11
            ws-cleanup:0.32
            
            Show
            ahuntpindrop Alex Hunt added a comment - What version of the plugins is this fixed in? This still seems to be a problem. We're using the following plugins: ace-editor:1.1 active-directory:2.0 ant:1.4 antisamy-markup-formatter:1.5 artifactory:2.8.1 authentication-tokens:1.3 aws-credentials:1.16 aws-java-sdk:1.11.37 bouncycastle-api:2.16.0 branch-api:1.11.1 build-timeout:1.18 cloudbees-folder:5.13 cobertura:1.9.8 conditional-buildstep:1.3.5 config-file-provider:2.13 credentials:2.1.10 credentials-binding:1.10 cucumber-testresult-plugin:0.9.7 datadog:0.5.5 display-url-api:0.5 docker-commons:1.5 docker-custom-build-environment:1.6.5 docker-workflow:1.9.1 durable-task:1.12 ec2:1.36 email-ext:2.52 embeddable-build-status:1.9 envinject:1.93.1 external-monitor-job:1.6 git:3.0.1 git-client:2.1.0 github:1.24.0 github-api:1.80 github-branch-source:1.10.1 github-organization-folder:1.5 git-server:1.7 global-build-stats:1.4 gradle:1.25 handlebars:1.1.1 htmlpublisher:1.11 icon-shim:2.0.3 ivy:1.26 jackson2-api:2.7.3 javadoc:1.4 jquery-detached:1.2.1 junit:1.19 ldap:1.13 mailer:1.18 mapdb-api:1.0.9.0 matrix-auth:1.4 matrix-project:1.7.1 maven-plugin:2.14 momentjs:1.1.1 node-iterator-api:1.5 pam-auth:1.3 parallel-test-executor:1.9 parameterized-trigger:2.32 pipeline-build-step:2.4 pipeline-graph-analysis:1.2 pipeline-input-step:2.5 pipeline-milestone-step:1.2 pipeline-rest-api:2.3 pipeline-stage-step:2.2 pipeline-stage-view:2.3 plain-credentials:1.3 resource-disposer:0.3 run-condition:1.0 scm-api:1.3 script-security:1.24 slack:2.1 ssh-agent:1.13 ssh-credentials:1.12 ssh-slaves:1.11 structs:1.5 subversion:2.7.1 swarm:2.2 timestamper:1.8.7 token-macro:2.0 windows-slaves:1.2 workflow-aggregator:2.4 workflow-api:2.6 workflow-basic-steps:2.3 workflow-cps:2.23 workflow-cps-global-lib:2.5 workflow-durable-task-step:2.5 workflow-job:2.9 workflow-multibranch:2.9.2 workflow-scm-step:2.3 workflow-step-api:2.5 workflow-support:2.11 ws-cleanup:0.32
            Hide
            jglick Jesse Glick added a comment - - edited

            workflow-cps 2.19. Alex Hunt please do not reopen. If you believe you have found a bug, file separately with complete, self-contained steps to reproduce from scratch.

            Show
            jglick Jesse Glick added a comment - - edited workflow-cps 2.19. Alex Hunt please do not reopen. If you believe you have found a bug, file separately with complete, self-contained steps to reproduce from scratch.
            ahuntpindrop Alex Hunt made changes -
            Link This issue relates to JENKINS-40235 [ JENKINS-40235 ]
            Hide
            ahuntpindrop Alex Hunt added a comment -

            Jesse Glick Thank you for your response. https://issues.jenkins-ci.org/browse/JENKINS-40235

            This seems identical to this ticket and JENKINS-37330. In fact, I just copied the example from that one.

            Show
            ahuntpindrop Alex Hunt added a comment - Jesse Glick Thank you for your response. https://issues.jenkins-ci.org/browse/JENKINS-40235 This seems identical to this ticket and JENKINS-37330 . In fact, I just copied the example from that one.

              People

              Assignee:
              jglick Jesse Glick
              Reporter:
              escoem Emilio Escobar
              Votes:
              2 Vote for this issue
              Watchers:
              7 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: