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

Cannot remove properties from Jenkinsfile for Pipeline from SCM

      In Pipeline Multibranch (and in general for Pipeline from SCM), when removing properties from a Jenkinsfile the properties of the branch job are not updated.

      Example

      1) I create a Jenkinsfile with Triggers:

      properties([pipelineTriggers([[$class: 'TimerTrigger', spec: 'H * * * *']])])
      
      node {
           ...
      }
      

      After branch indexing, the trigger is correctly set for the job

      2) Now I want to remove this trigger. I remove the properties step:

      node {
           ...
      }
      

      I trigger a branch indexing

      Expected result: My job configuration has no trigger
      Actual result: The trigger is still there


      Workaround

      So pipeline updates the properties only if the properties step is set in the Jenkinsfile. There is therefore a workaround.

      In this particular scenario, if I want to get rid of the trigger, I need to update to something like this first:

      properties([pipelineTriggers([])])
      // or also `properties([])`
      
      node {
        ...
      }
      

          [JENKINS-41875] Cannot remove properties from Jenkinsfile for Pipeline from SCM

          Daniel Beck added a comment -

          Now I want to remove this trigger. I remove the properties step:

          Not how it works. Would also be dangerous for single-branch Pipelines, whose job config would be reset on every execution, or we'd need confusing special casing.

          properties() should do it.

          Daniel Beck added a comment - Now I want to remove this trigger. I remove the properties step: Not how it works. Would also be dangerous for single-branch Pipelines, whose job config would be reset on every execution, or we'd need confusing special casing. properties() should do it.

          Daniel Beck added a comment -

          AFAIU it's actually pretty straightforward:

          properties(…) sets them (rather than e.g. add/replace). Absence of properties(…) keeps whatever is currently there.

          Daniel Beck added a comment - AFAIU it's actually pretty straightforward: properties(…) sets them (rather than e.g. add/replace). Absence of properties(…) keeps whatever is currently there.

          Jesse Glick added a comment -
          properties()
          

          indeed.

          Jesse Glick added a comment - properties() indeed.

            Unassigned Unassigned
            allan_burdajewicz Allan BURDAJEWICZ
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: