-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
Jenkins 2.176.4, git-plugin 3.12.1
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
This is should be a "Major" issue, as we can't achieve reliable build results, especially than documentation says it should work in that way.