jenkinsci / jenkinsci/gitlab-branch-source-plugin

Jenkinsfile MR pipeline status is ignored if there is a Gitlab MR pipeline

Open
#493 1 comment 4 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
134
Forks
113
PR merge metrics
No merged PRs in 30d

Description

### Jenkins and plugins versions report

Environment


```text
Jenkins: 2.504.1
OS: Linux - 6.6.72+
Java: 21.0.7 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
ansicolor:1.0.6
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.4.4-144.vc483d91903d2
asm-api:9.8-135.vb_2239d08ee90
authentication-tokens:1.131.v7199556c3004
authorize-project:2.0.0
basic-branch-build-strategies:228.v68c089762a_db_
blueocean:1.27.19
blueocean-bitbucket-pipeline:1.27.19
blueocean-commons:1.27.19
blueocean-config:1.27.19
blueocean-core-js:1.27.19
blueocean-dashboard:1.27.19
blueocean-display-url:2.4.4
blueocean-events:1.27.19
blueocean-git-pipeline:1.27.19
blueocean-github-pipeline:1.27.19
blueocean-i18n:1.27.19
blueocean-jwt:1.27.19
blueocean-personalization:1.27.19
blueocean-pipeline-api-impl:1.27.19
blueocean-pipeline-editor:1.27.19
blueocean-pipeline-scm-api:1.27.19
blueocean-rest:1.27.19
blueocean-rest-impl:1.27.19
blueocean-web:1.27.19
bootstrap5-api:5.3.5-1
bouncycastle-api:2.30.1.80-256.vf98926042a_9b_
branch-api:2.1217.v43d8b_b_d8b_2c7
caffeine-api:3.2.0-166.v72a_6d74b_870f
checks-api:370.vb_61a_c57328f3
chucknorris:159.vdfe649cb_9c37
cloudbees-bitbucket-branch-source:936.1.1
cloudbees-folder:6.1012.v79a_86a_1ea_c1f
commons-compress-api:1.27.1-3
commons-lang3-api:3.17.0-87.v5cf526e63b_8b_
commons-text-api:1.13.0-153.v91dcd89e2a_22
configuration-as-code:1967.va_968e15fd05b_
credentials:1415.v831096eb_5534
credentials-binding:687.v619cb_15e923f
cucumber-reports:5.8.5
display-url-api:2.209.v582ed814ff2f
docker-commons:451.vd12c371eeeb_3
docker-workflow:611.v16e84da_6d3ff
durable-task:587.v84b_877235b_45
echarts-api:5.6.0-4
eddsa-api:0.3.0.1-19.vc432d923e5ee
email-ext:1876.v28d8d38315b_d
favorite:2.225.v68765b_b_a_1fa_3
font-awesome-api:6.7.2-1
gcp-secrets-manager-credentials-provider:0.3.1
git:5.7.0
git-client:6.1.3
github:1.43.0
github-api:1.321-488.v9b_c0da_9533f8
github-branch-source:1815.v9152b_2ff7a_1b_
gitlab-api:5.6.0-100.v83f8f4b_f1129
gitlab-branch-source:718.v40b_5f0e67cd3
google-compute-engine:4.683.v0ce26579a_ee7
google-oauth-plugin:1.335.ve6de40e2db_18
gson-api:2.13.1-139.v4569c2ef303f
handy-uri-templates-2-api:2.1.8-36.v85e4cb_234a_13
htmlpublisher:425
instance-identity:203.v15e81a_1b_7a_38
ionicons-api:88.va_4187cb_eddf1
jackson2-api:2.18.3-402.v74c4eb_f122b_2
jakarta-activation-api:2.1.3-2
jakarta-mail-api:2.1.3-2
javax-activation-api:1.2.0-8
jaxb:2.3.9-133.vb_ec76a_73f706
jenkins-design-language:1.27.19
jersey2-api:2.45-154.v4ded3dc34f81
jjwt-api:0.11.5-120.v0268cf544b_89
job-dsl:1.92
joda-time-api:2.14.0-127.v7d9da_295a_d51
jquery3-api:3.7.1-3
jsch:0.2.16-95.v3eecb_55fa_b_78
json-api:20250107-125.v28b_a_ffa_eb_f01
json-path-api:2.9.0-148.v22a_7ffe323ce
junit:1322.v1556dc1c59a_f
kubernetes:4336.v55d9a_494db_38
kubernetes-client-api:6.10.0-251.v556f5f100500
kubernetes-credentials:192.v4d5b_1c429d17
kubernetes-credentials-provider:1.276.v99a_de03cb_076
ldap:780.vcb_33c9a_e4332
logstash:2.5.0218.v0a_ff8fefc12b_
mailer:489.vd4b_25144138f
matrix-auth:3.2.6
matrix-project:849.v0cd64ed7e531
metrics:4.2.30-471.v55fa_495f2b_f5
mina-sshd-api-common:2.15.0-161.vb_200831a_c15b_
mina-sshd-api-core:2.15.0-161.vb_200831a_c15b_
next-build-number:66.v4b_4762172d53
oauth-credentials:0.657.v7d8dd90b_0382
okhttp-api:4.11.0-189.v976fa_d3379d6
parameterized-scheduler:285.ve611986d4c48
pipeline-build-step:567.vea_ce550ece97
pipeline-graph-analysis:235.vb_a_a_36b_f248c2
pipeline-graph-view:516.vd1d03f6c4a_99
pipeline-groovy-lib:752.vdddedf804e72
pipeline-input-step:517.vf8e782ee645c
pipeline-milestone-step:134.vdf60d179845f
pipeline-model-api:2.2255.v56a_15e805f12
pipeline-model-definition:2.2255.v56a_15e805f12
pipeline-model-extensions:2.2255.v56a_15e805f12
pipeline-rest-api:2.38
pipeline-stage-step:322.vecffa_99f371c
pipeline-stage-tags-metadata:2.2255.v56a_15e805f12
pipeline-stage-view:2.38
pipeline-utility-steps:2.19.0
plain-credentials:195.vb_906e9073dee
plugin-util-api:6.1.0
prism-api:1.30.0-1
pubsub-light:1.19
qtest:2024.2
resource-disposer:0.25
scm-api:704.v3ce5c542825a_
script-security:1373.vb_b_4a_a_c26fa_00
slack:761.v2a_8770f0d169
snakeyaml-api:2.3-125.v4d77857a_b_402
sse-gateway:1.28
ssh-credentials:355.v9b_e5b_cde5003
structs:343.vdcf37b_a_c81d5
timestamper:1.28
token-macro:444.v52de7e9c573d
trilead-api:2.209.v0e69b_c43c245
variant:70.va_d9f17f859e0
workflow-aggregator:608.v67378e9d3db_1
workflow-api:1371.ve334280b_d611
workflow-basic-steps:1079.vce64b_a_929c5a_
workflow-cps:4106.v7a_8a_8176d450
workflow-durable-task-step:1405.v1fcd4a_d00096
workflow-job:1520.v56d65e3b_4566
workflow-multibranch:806.vb_b_688f609ee9
workflow-scm-step:437.v05a_f66b_e5ef8
workflow-step-api:700.v6e45cb_a_5a_a_21
workflow-support:968.v8f17397e87b_8
ws-cleanup:0.48
```

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

Jenkins deployed on GKE using helm chart

### Reproduction steps

1. Create a repo with both `.gitlab-ci.yml` and `Jenkinsfile`
2. Both pipelines need to trigger in a Merge Request

### Expected Results

When both pipelines triggered, only one pipeline "merge request" should appear in GitLab, including both GitLab jobs statuses and Jenkins pipeline status.

### Actual Results

When both triggered, only the GitLab pipeline status is shown in the MR because there are 2 "pipeline results" in GitLab

- one pipeline "branch" from Jenkins with ref: ``
- one pipeline "merge request" from GitLab with ref: `refs/merge-requests//head` (or `refs/merge-requests//merge`)

And only the pipeline "merge request" is considered.

### Anything else?

The issue occurs when there are both a `.gitlab-ci.yml` and a `Jenkinsfile` present in repo and triggered in a Merge Request, the MR pipeline status will only consider status from GitLab pipeline (ignoring Jenkins pipeline status).

The issue doesn't occur when only Jenkins pipeline is triggered (where GitLab rules didn't trigger GitLab MR pipeline), the MR pipeline status will consider the Jenkins pipeline status.

gitlab-branch-source-plugin use this GitLab REST API to set the status of a pipeline: https://docs.gitlab.com/api/commits/#set-the-pipeline-status-of-a-commit

And the probable source is from the usage of `status.setRef` where it sets the `` of the merge request here:

https://github.com/jenkinsci/gitlab-branch-source-plugin/blob/40b5f0e67cd36c3e8b925baf41b17f907ef32314/src/main/java/io/jenkins/plugins/gitlabbranchsource/helpers/GitLabPipelineStatusNotifier.java#L381
https://github.com/jenkinsci/gitlab-branch-source-plugin/blob/40b5f0e67cd36c3e8b925baf41b17f907ef32314/src/main/java/io/jenkins/plugins/gitlabbranchsource/helpers/GitLabPipelineStatusNotifier.java#L494
But GitLab uses another ref for merge request statuses:

either `refs/merge-requests//head`
or `refs/merge-requests//merge`

Jira: https://issues.jenkins.io/browse/JENKINS-75698

### Are you interested in contributing a fix?

_No response_

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.