checkout scm doesn't take revision that started the pipeline

This issue is archived. You can view it, but you can't modify it. Learn more

XMLWordPrintable

      Pipeline job

      checkout scm doesn't take revision that started the pipeline instead takes last (fresh) commit from branch 

      Related to doc:

      https://jenkins.io/doc/book/pipeline/jenkinsfile/

      The checkout step will checkout code from source control; scm is a special variable which instructs the checkout step to clone the specific revision which triggered this Pipeline run.

       
      To reproduce:

      • Merge to branch (abc)
      • start pipeline
      • pipeline waits for continue (input message)
      • push new change to branch (xyz)
      • resume pipeline

      Expect:

      • pipeline resume abc

      Observe:

      • pipeline resume xyz
         

      Workaround for as - use explicit checkout git commit

      variable GIT_COMMIT we defined at the beginning of Pipeline: 

      def scmVars = checkout scm
      env.GIT_COMMIT = scmVars.GIT_COMMIT

       

      And we see that checkout show different results:

       

      checkout scm: [$class: 'GitSCM', branches: [[name: "${GIT_COMMIT}"]]]
      sh 'cat new_files'
      // abc

       

      checkout scm
      sh 'cat new_files'
      // xyz

       

      It's a bug or feature? according to the doc - bug... (git plugin?)

       

      Can be related with JENKINS-59071 or JENKINS-43761

       

            Assignee:
            Unassigned
            Reporter:
            Mykhailo Zolotarenko
            Archiver:
            Jenkins Service Account

              Created:
              Updated:
              Archived: