jenkinsci / jenkinsci/gitlab-plugin

gitlabCommitStatus with more than one build in the builds array results in incorrect branch used

Open
#1,456 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Java
Stars
1.4k
Forks
615
Avg merge
4h 32m
Merged PRs (30d)
10

Description

### Jenkins and plugins versions report

Environment


```text
Jenkins: 2.375.1
OS: Linux - 4.9.0-4-amd64
Java: 11.0.17 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
Parameterized-Remote-Trigger:3.0.0
ace-editor:1.1
analysis-core:1.95
analysis-model-api:10.21.0
ansicolor:1.0.2
ant:481.v7b_09e538fcca
antisamy-markup-formatter:155.v795fb_8702324
apache-httpcomponents-client-4-api:4.5.13-138.v4e7d9a_7b_a_e61
artifactory:3.18.1
authentication-tokens:1.4
blueocean:1.27.0
blueocean-autofavorite:1.2.5
blueocean-bitbucket-pipeline:1.27.0
blueocean-commons:1.27.0
blueocean-config:1.27.0
blueocean-core-js:1.27.0
blueocean-dashboard:1.27.0
blueocean-display-url:2.4.1
blueocean-events:1.27.0
blueocean-git-pipeline:1.27.0
blueocean-github-pipeline:1.27.0
blueocean-i18n:1.27.0
blueocean-jira:1.27.0
blueocean-jwt:1.27.0
blueocean-personalization:1.27.0
blueocean-pipeline-api-impl:1.27.0
blueocean-pipeline-editor:1.27.0
blueocean-pipeline-scm-api:1.27.0
blueocean-rest:1.27.0
blueocean-rest-impl:1.27.0
blueocean-web:1.27.0
bootstrap4-api:4.6.0-5
bootstrap5-api:5.2.1-3
bouncycastle-api:2.26
branch-api:2.1051.v9985666b_f6cc
build-name-setter:2.2.0
build-timeout:1.28
build-user-vars-plugin:1.9
build-with-parameters:76.v9382db_f78962
caffeine-api:2.9.3-65.v6a_47d0f4d1fe
checks-api:1.8.1
chucknorris:1.4
cloudbees-bitbucket-branch-source:791.vb_eea_a_476405b
cloudbees-folder:6.800.v71307ca_b_986b
cobertura:1.17
code-coverage-api:3.4.1
command-launcher:90.v669d7ccb_7c31
commons-lang3-api:3.12.0-36.vd97de6465d5b_
commons-text-api:1.10.0-27.vb_fa_3896786a_7
conditional-buildstep:1.4.1
config-file-provider:3.11.1
credentials:1214.v1de940103927
credentials-binding:523.vd859a_4b_122e6
dark-theme:262.v0202a_4c8fb_6a
dashboard-view:2.466.vdfefd95a_b_f8d
data-tables-api:1.12.1-4
display-url-api:2.3.7
docker-commons:1.21
docker-workflow:1.26
downstream-build-cache:1.7
dtkit-api:3.0.2
durable-task:503.v57154d18d478
echarts-api:5.4.0-1
email-ext:2.93
embeddable-build-status:312.vf2de01b_051d0
envinject:2.892.v25453b_80e595
envinject-api:1.199.v3ce31253ed13
external-monitor-job:203.v683c09d993b_9
favorite:2.4.1
file-parameters:264.v1733d9b_2a_380
font-awesome-api:6.2.1-1
forensics-api:1.17.0
git:5.0.0
git-client:4.0.0
git-server:99.va_0826a_b_cdfa_d
github:1.36.1
github-api:1.303-400.v35c2d8258028
github-branch-source:1696.v3a_7603564d04
gitlab-plugin:1.6.0
global-slack-notifier:1.5
gradle:2.2
handlebars:3.0.8
handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953
htmlpublisher:1.31
instance-identity:142.v04572ca_5b_265
ionicons-api:31.v4757b_6987003
ivy:2.4
jackson2-api:2.14.1-313.v504cdd45c18b
jakarta-activation-api:2.0.1-2
jakarta-mail-api:2.0.1-2
javadoc:226.v71211feb_e7e9
javax-activation-api:1.2.0-5
javax-mail-api:1.6.2-8
jaxb:2.3.7-1
jdk-tool:63.v62d2fd4b_4793
jenkins-design-language:1.27.0
jersey2-api:2.38-1
jira:3.8
jjwt-api:0.11.5-77.v646c772fddb_0
jobConfigHistory:1191.v168c8c2b_956a
jquery-detached:1.2.1
jquery3-api:3.6.1-2
jsch:0.1.55.61.va_e9ee26616e7
junit:1166.va_436e268e972
ldap:2.12
lockable-resources:1106.vc9153f1a_ff25
mailer:438.v02c7f0a_12fa_4
mapdb-api:1.0.9-28.vf251ce40855d
matrix-auth:2.6.8
matrix-project:785.v06b_7f47b_c631
maven-plugin:3.20
mercurial:1260.vdfb_723cdcc81
mina-sshd-api-common:2.9.2-50.va_0e1f42659a_a
mina-sshd-api-core:2.9.2-50.va_0e1f42659a_a
momentjs:1.1.1
okhttp-api:4.9.3-108.v0feda04578cf
pam-auth:1.10
parameterized-scheduler:1.1
parameterized-trigger:2.45
pipeline-build-step:2.18
pipeline-config-history:1.6
pipeline-graph-analysis:195.v5812d95a_a_2f9
pipeline-groovy-lib:629.vb_5627b_ee2104
pipeline-input-notification:15.v175f12f20f9e
pipeline-input-step:466.v6d0a_5df34f81
pipeline-milestone-step:101.vd572fef9d926
pipeline-model-api:2.2118.v31fd5b_9944b_5
pipeline-model-definition:2.2118.v31fd5b_9944b_5
pipeline-model-extensions:2.2118.v31fd5b_9944b_5
pipeline-rest-api:2.28
pipeline-stage-step:296.v5f6908f017a_5
pipeline-stage-tags-metadata:2.2118.v31fd5b_9944b_5
pipeline-stage-view:2.28
pipeline-utility-steps:2.15.0
plain-credentials:143.v1b_df8b_d3b_e48
plugin-util-api:2.20.0
popper-api:1.16.1-3
popper2-api:2.11.6-2
prism-api:1.29.0-2
publish-over:0.22
publish-over-cifs:0.16
pubsub-light:1.17
rebuild:1.34
resource-disposer:0.20
run-condition:1.5
scm-api:631.v9143df5b_e4a_a
script-security:1228.vd93135a_2fb_25
slack:631.v40deea_40323b
snakeyaml-api:1.33-90.v80dcb_3814d35
sse-gateway:1.26
ssh-agent:295.v9ca_a_1c7cc3a_a_
ssh-credentials:305.v8f4381501156
ssh-slaves:2.854.v7fd446b_337c9
sshd:3.275.v9e17c10f2571
structs:324.va_f5d6774f3a_d
subversion:2.17.0
theme-manager:1.6
throttle-concurrents:2.10
timestamper:1.21
token-macro:321.vd7cc1f2a_52c8
trilead-api:2.84.v72119de229b_7
variant:59.vf075fe829ccb
warnings:4.67
warnings-ng:9.22.0
windows-slaves:1.8.1
workflow-aggregator:590.v6a_d052e5a_a_b_5
workflow-api:1200.v8005c684b_a_c6
workflow-basic-steps:994.vd57e3ca_46d24
workflow-cps:3601.v9b_36a_d99e1cc
workflow-durable-task-step:1217.v38306d8fa_b_5c
workflow-job:1254.v3f64639b_11dd
workflow-multibranch:716.vc692a_e52371b_
workflow-scm-step:400.v6b_89a_1317c9a_
workflow-step-api:639.v6eca_cd8c04a_a_
workflow-support:839.v35e2736cfd5c
ws-cleanup:0.44
xunit:3.1.2
yet-another-build-visualizer:1.16
```

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

Linux

### Reproduction steps

1. Create a declarative pipeline job on jenkins
2. Use gitlabCommitStatus as shown in the example to update the status of two different projects/branches (see code below)
3. On gitlab create two MRs for the branches
4. Trigger the jenkins job from testing/myFirstProject's MR (i.e. on comment or modification)
```
gitlabCommitStatus(name: 'build',
builds: [
[projectId: 'testing/myFirstProject', revisionHash: 'myFirstProjectBranch'],
[projectId: 'testing/mySecondProject', revisionHash: 'mySecondProjectBranch'],
])
{
echo "Hello world"
}
```

### Expected Results

Gitlab should indicate a job for the two project/branches, and they should be linked to the respective MRs

### Actual Results

testing/myFirstProject has launched a pipeline (seen from CI/CD "pipelines" view in gitlab), branch, sha and status are OK, clicking on the pipeline link shows "1 related merge request"

testing/mySecondProject has launched a pipeline (from CI/CD "pipelines" view in gitlab), sha and status are OK, **branch is wrong -> it indicates the branch "myFirstProjectBranch" (that is not part of this project), clicking on the pipeline link shows no related merge request.**

### Anything else?

Looking at src/main/java/com/dabsquared/gitlabjenkins/util/CommitStatusUpdater.java at line 99 seems to indicate that the "branch or tag" of the job that "launched" the action is passed as ref for the call to changeBuildStatus (so that observed result is coherent with the code). Is it really the desired behavior ?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.