Skip to content

checkout branches parameter does not seem to work when a job is triggered by a webhook. #3913

@gypark

Description

@gypark

Jenkins and plugins versions report

Environment
Jenkins: 2.528.3
OS: Linux - 5.15.0-152-generic
Java: 21.0.9 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
ant:520.vd082ecfb_16a_9
antisamy-markup-formatter:173.v680e3a_b_69ff3
apache-httpcomponents-client-4-api:4.5.14-269.vfa_2321039a_83
apache-httpcomponents-client-5-api:5.6-183.ve5a_8a_b_e71e59
asm-api:9.9.1-189.vb_5ef2964da_91
authentication-tokens:1.144.v5ff4a_5ec5c33
blueocean:1.27.25
blueocean-autofavorite:1.2.5
blueocean-bitbucket-pipeline:1.27.25
blueocean-commons:1.27.25
blueocean-config:1.27.25
blueocean-core-js:1.27.25
blueocean-dashboard:1.27.25
blueocean-display-url:2.4.4
blueocean-events:1.27.25
blueocean-git-pipeline:1.27.25
blueocean-github-pipeline:1.27.25
blueocean-i18n:1.27.25
blueocean-jira:1.27.25
blueocean-jwt:1.27.25
blueocean-personalization:1.27.25
blueocean-pipeline-api-impl:1.27.25
blueocean-pipeline-editor:1.27.25
blueocean-pipeline-scm-api:1.27.25
blueocean-rest:1.27.25
blueocean-rest-impl:1.27.25
blueocean-web:1.27.25
bootstrap5-api:5.3.8-895.v4d0d8e47fea_d
bouncycastle-api:2.30.1.82-277.v70ca_0b_877184
branch-api:2.1268.v044a_87612da_8
build-timeout:1.39
build-user-vars-plugin:212.vd6b_e9f6d0cdb_
caffeine-api:3.2.3-194.v31a_b_f7a_b_5a_81
checks-api:373.vfe7645102093
cloudbees-bitbucket-branch-source:937.2.3
cloudbees-folder:6.1073.va_7888eb_dd514
command-launcher:123.v37cfdc92ef67
commons-collections4-api:4.5.0-8.va_d5448ef9011
commons-compress-api:1.28.0-2
commons-lang3-api:3.20.0-109.ve43756e2d2b_4
commons-text-api:1.15.0-210.v7480a_da_70b_9e
copyartifact:770.va_6c69e063442
credentials:1453.v9b_a_29777a_b_fd
credentials-binding:702.vfe613e537e88
data-tables-api:2.3.5-1497.v38449eb_7d5a_1
display-url-api:2.217.va_6b_de84cc74b_
docker-commons:457.v0f62a_94f11a_3
docker-workflow:634.vedc7242b_eda_7
durable-task:639.vefb_3d8372f6d
echarts-api:6.0.0-1165.vd1283a_3e37d4
eddsa-api:0.3.0.1-19.vc432d923e5ee
email-ext:1933.v45cec755423f
external-monitor-job:223.vb_fddcf42c9b_3
favorite:2.253.v9b_413168133b_
font-awesome-api:7.1.0-882.v1dfb_771e3278
git:5.8.1
git-client:6.5.0
git-server:137.ve0060b_432302
github:1.45.0
github-api:1.330-492.v3941a_032db_2a_
github-branch-source:1917.v9ee8a_39b_3d0d
gitlab-plugin:1.9.13
gradle:2.18.1203.v2c96b_1243c72
gson-api:2.13.2-173.va_a_092315913c
handy-uri-templates-2-api:2.1.8-38.vcea_5d521d5f3
htmlpublisher:427
instance-identity:203.v15e81a_1b_7a_38
ionicons-api:94.vcc3065403257
jackson2-api:2.20.1-423.v13951f6b_6532
jakarta-activation-api:2.1.4-1
jakarta-mail-api:2.1.5-1
jakarta-xml-bind-api:4.0.6-10.v9b_7e1d1fc40b_
javadoc:354.vee1a_660b_4990
javax-activation-api:1.2.0-8
javax-mail-api:1.6.2-11
jaxb:2.3.9-133.vb_ec76a_73f706
jdk-tool:83.v417146707a_3d
jenkins-design-language:1.27.25
jersey2-api:2.47-165.ve7809a_3e87e0
jersey3-api:3.1.11-4.v77818819c2e1
jira:3.21
jjwt-api:0.11.5-120.v0268cf544b_89
joda-time-api:2.14.0-149.v1c3ce991d1b_9
jquery3-api:3.7.1-619.vdb_10e002501a_
jsch:0.2.16-95.v3eecb_55fa_b_78
json-api:20251224-185.v0cc18490c62c
json-path-api:2.10.0-202.va_9cc16c1e476
jsoup:1.21.2-66.v6ea_38164b_8a_2
junit:1369.v15da_00283f06
ldap:793.v754d6b_41b_ea_4
locale:614.va_6a_5a_1a_f2b_38
lockable-resources:1438.v3c0f8c9e2060
mailer:525.v2458b_d8a_1a_71
mapdb-api:1.0.9-44.va_1e1310c9118
matrix-auth:3.2.9
matrix-project:870.v9db_fcfc2f45b_
maven-plugin:3.27
mercurial:1323.ve69d2a_db_8a_b_d
mina-sshd-api-common:2.16.0-167.va_269f38cc024
mina-sshd-api-core:2.16.0-167.va_269f38cc024
okhttp-api:4.12.0-195.vc02552c04ffd
oss-symbols-api:424.ved751e062911
pam-auth:1.12
pipeline-build-step:571.v08a_fffd4b_0ce
pipeline-github-lib:65.v203688e7727e
pipeline-graph-analysis:245.v88f03631a_b_21
pipeline-groovy-lib:787.ve2fef0efdca_6
pipeline-input-step:540.v14b_100d754dd
pipeline-milestone-step:138.v78ca_76831a_43
pipeline-model-api:2.2277.v00573e73ddf1
pipeline-model-definition:2.2277.v00573e73ddf1
pipeline-model-extensions:2.2277.v00573e73ddf1
pipeline-rest-api:2.38
pipeline-stage-step:322.vecffa_99f371c
pipeline-stage-tags-metadata:2.2277.v00573e73ddf1
pipeline-stage-view:2.38
pipeline-utility-steps:2.20.0
plain-credentials:199.v9f8e1f741799
plugin-util-api:6.1192.v30fe6e2837ff
prism-api:1.30.0-630.va_e19d17f83b_0
publish-over:0.22
publish-over-ssh:390.vb_f56e7405751
pubsub-light:1.19
resource-disposer:0.25
scm-api:724.v7d839074eb_5c
script-security:1385.v7d2d9ec4d909
slack:795.v4b_9705b_e6d47
snakeyaml-api:2.5-143.v93b_c004f89de
sonar:2.18.2
sse-gateway:1.28
ssh-credentials:361.vb_f6760818e8c
ssh-slaves:3.1085.vc64d040efa_85
sshd:3.374.v19b_d59ce6610
structs:362.va_b_695ef4fdf9
subversion:1292.ve8cf25770ee3
timestamper:1.30
token-macro:477.vd4f0dc3cb_cf1
trilead-api:2.284.v1974ea_324382
variant:70.va_d9f17f859e0
workflow-aggregator:608.v67378e9d3db_1
workflow-api:1384.vdc05a_48f535f
workflow-basic-steps:1098.v808b_fd7f8cf4
workflow-cps:4238.va_6fb_65c1f699
workflow-durable-task-step:1464.v2d3f5c68f84c
workflow-job:1559.va_a_533730b_ea_d
workflow-multibranch:821.vc3b_4ea_780798
workflow-scm-step:466.va_d69e602552b_
workflow-step-api:710.v3e456cc85233
workflow-support:1010.vb_b_39488a_9841
ws-cleanup:0.49

What Operating System are you using (both controller, and any agents involved in the problem)?

Linux Ubuntu 24.04
Jenkins docker image: jenkins:2.528.3-lts-jdk21

Reproduction steps

  1. Create a pipeline job in Jenkins
    1. Triggers : Build when a change is pushed to Gitlab. Gitlab webhook URL: ****
      1. Check Push Events
    2. Pipeline: Definition script from SCM
      1. SCM: Git
      2. Branches to build: */stage
      3. Script Path: Jenkinsfile
  2. Create a Jenkinsfile
pipeline {
  agent none
// At first, show the current branch and commit ID.
  stages {
      stage('Check workspace branch') {
          agent any
          steps {
              sh 'pwd; echo "[workspace] branch=$(git branch --show-current) commit=$(git rev-parse --short HEAD)"'
          }
      }
      stage('Checkout another branch into a subdirectory') {
          agent any
          steps {
// Create a subdirectory, then checkout `dev` branch (different from the job build branch)
              dir('branch-dev') {
                  checkout scmGit(
                      branches: [[name: 'dev']],
                      userRemoteConfigs: [[url: scm.userRemoteConfigs[0].url]],
                  )
                  sh 'pwd; echo "[branch-dev subdirectory] branch=$(git branch --show-current) commit=$(git rev-parse --short HEAD)"'
              }
          }
      }
  }
}
  1. Push stage branch to the repository so that this job can be started by webhook call
  2. Start this job manually. Compare the results.

Expected Results

In both cases:

  • the branch of the workspace itself is stage.
    • More precisely, detached HEAD points to the commit of stage branch
  • the branch of the branch-dev subdirectory is dev
    • detached HEAD points to the commit of dev branch

Actual Results

Jenkinsfile.txt
Jenkins_output_2_manual.txt
Jenkins_output_1_webhook.txt

When built manually, the result is exactly as expected.

...
[workspace] branch= commit=eec6fc17
...
[branch-dev subdirectory] branch= commit=b584d6d6
...

(eec6fc17 : stage, b584d6d6 : dev)

However, when the job is triggered by the webhook, detached HEAD is at the commit of stage, not dev

[workspace] branch= commit=eec6fc17
...
[branch-dev subdirectory] branch= commit=eec6fc17

Anything else?

I don’t have sufficient knowledge of Git and Jenkins, so I’m not sure whether this is a bug or not. I apologize for that.

While searching for related information, I found the following discussion that seems related:
https://www.reddit.com/r/jenkinsci/comments/1nwfqfy/jenkins_not_respecting_scmbranches_when_triggered

Thank you.

Are you interested in contributing a fix?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions