jenkinsci / gitlab-branch-source-plugin

A Jenkins Plugin for GitLab Multibranch Pipeline jobs and Folder Organization
https://plugins.jenkins.io/gitlab-branch-source
MIT License
121 stars 85 forks source link

MR jobs are not triggered by non-code updates #430

Open hoang97 opened 2 weeks ago

hoang97 commented 2 weeks ago

Jenkins and plugins versions report

Environment ```text Jenkins: 2.452.2 OS: Linux - 6.5.0-35-generic Java: 11.0.23 - Eclipse Adoptium (OpenJDK 64-Bit Server VM) --- ant:497.v94e7d9fffa_b_9 antisamy-markup-formatter:162.v0e6ec0fcfcf6 apache-httpcomponents-client-4-api:4.5.14-208.v438351942757 asm-api:9.7-33.v4d23ef79fcc8 authentication-tokens:1.113.v81215a_241826 blueocean:1.27.13 blueocean-bitbucket-pipeline:1.27.13 blueocean-commons:1.27.13 blueocean-config:1.27.13 blueocean-core-js:1.27.13 blueocean-dashboard:1.27.13 blueocean-display-url:2.4.2 blueocean-events:1.27.13 blueocean-git-pipeline:1.27.13 blueocean-github-pipeline:1.27.13 blueocean-i18n:1.27.13 blueocean-jwt:1.27.13 blueocean-personalization:1.27.13 blueocean-pipeline-api-impl:1.27.13 blueocean-pipeline-editor:1.27.13 blueocean-pipeline-scm-api:1.27.13 blueocean-rest:1.27.13 blueocean-rest-impl:1.27.13 blueocean-web:1.27.13 bootstrap5-api:5.3.3-1 bouncycastle-api:2.30.1.78.1-233.vfdcdeb_0a_08a_a_ branch-api:2.1169.va_f810c56e895 build-timeout:1.32 caffeine-api:3.1.8-133.v17b_1ff2e0599 checks-api:2.2.0 cloudbees-bitbucket-branch-source:886.v44cf5e4ecec5 cloudbees-folder:6.928.v7c780211d66e commons-lang3-api:3.14.0-76.vda_5591261cfe commons-text-api:1.12.0-119.v73ef73f2345d credentials:1337.v60b_d7b_c7b_c9f credentials-binding:677.vdc9d38cb_254d dark-theme:439.vdef09f81f85e display-url-api:2.204.vf6fddd8a_8b_e9 durable-task:555.v6802fe0f0b_82 echarts-api:5.5.0-1 eddsa-api:0.3.0-4.v84c6f0f4969e email-ext:1814.v404722f34263 favorite:2.208.v91d65b_7792a_c font-awesome-api:6.5.2-1 git:5.2.2 git-client:5.0.0 github:1.39.0 github-api:1.318-461.v7a_c09c9fa_d63 github-branch-source:1789.v5b_0c0cea_18c3 gitlab-api:5.3.0-91.v1f9a_fda_d654f gitlab-branch-source:704.vc7f1202d7e14 gitlab-plugin:1.8.1 gradle:2.12 gson-api:2.11.0-41.v019fcf6125dc handy-uri-templates-2-api:2.1.8-30.v7e777411b_148 htmlpublisher:1.34 instance-identity:185.v303dc7c645f9 ionicons-api:74.v93d5eb_813d5f jackson2-api:2.17.0-379.v02de8ec9f64c jakarta-activation-api:2.1.3-1 jakarta-mail-api:2.1.3-1 javax-activation-api:1.2.0-7 javax-mail-api:1.6.2-10 jaxb:2.3.9-1 jenkins-design-language:1.27.13 jersey2-api:2.42-147.va_28a_44603b_d5 jjwt-api:0.11.5-112.ve82dfb_224b_a_d joda-time-api:2.12.7-29.v5a_b_e3a_82269a_ jquery3-api:3.7.1-2 json-api:20240303-41.v94e11e6de726 json-path-api:2.9.0-58.v62e3e85b_a_655 junit:1265.v65b_14fa_f12f0 ldap:725.v3cb_b_711b_1a_ef mailer:472.vf7c289a_4b_420 matrix-auth:3.2.2 matrix-project:832.va_66e270d2946 metrics:4.2.21-451.vd51df8df52ec mina-sshd-api-common:2.12.1-113.v4d3ea_5eb_7f72 mina-sshd-api-core:2.12.1-113.v4d3ea_5eb_7f72 okhttp-api:4.11.0-172.vda_da_1feeb_c6e pam-auth:1.11 pipeline-build-step:540.vb_e8849e1a_b_d8 pipeline-github-lib:61.v629f2cc41d83 pipeline-graph-analysis:216.vfd8b_ece330ca_ pipeline-graph-view:287.v3ef017b_780d5 pipeline-groovy-lib:727.ve832a_9244dfa_ pipeline-input-step:495.ve9c153f6067b_ pipeline-milestone-step:119.vdfdc43fc3b_9a_ pipeline-model-api:2.2198.v41dd8ef6dd56 pipeline-model-definition:2.2198.v41dd8ef6dd56 pipeline-model-extensions:2.2198.v41dd8ef6dd56 pipeline-stage-step:312.v8cd10304c27a_ pipeline-stage-tags-metadata:2.2198.v41dd8ef6dd56 plain-credentials:182.v468b_97b_9dcb_8 plugin-util-api:4.1.0 pubsub-light:1.18 resource-disposer:0.23 scm-api:690.vfc8b_54395023 script-security:1341.va_2819b_414686 snakeyaml-api:2.2-111.vc6598e30cc65 sse-gateway:1.27 ssh-credentials:337.v395d2403ccd4 ssh-slaves:2.968.v6f8823c91de4 structs:337.v1b_04ea_4df7c8 theme-manager:262.vc57ee4a_eda_5d timestamper:1.27 token-macro:400.v35420b_922dcb_ trilead-api:2.147.vb_73cc728a_32e variant:60.v7290fc0eb_b_cd workflow-aggregator:596.v8c21c963d92d workflow-api:1316.v33eb_726c50b_a_ workflow-basic-steps:1058.vcb_fc1e3a_21a_9 workflow-cps:3903.v48a_8836749e9 workflow-durable-task-step:1353.v1891a_b_01da_18 workflow-job:1400.v7fd111b_ec82f workflow-multibranch:783.787.v50539468395f workflow-scm-step:427.v4ca_6512e7df1 workflow-step-api:657.v03b_e8115821b_ workflow-support:907.v6713a_ed8a_573 ws-cleanup:0.46 ```

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

docker image: jenkins/jenkins:2.452.2-jdk11

Reproduction steps

  1. Create Gitlab Organization Folder with all the setup from homepage
  2. Create a Merge Request to project which explored by Organization Folder job
  3. Update Merge Request title/description

Expected Results

Merge Request job is triggered

Actual Results

No job is triggered even when the Ignore builds for non-code related MR updates option is turned off

Anything else?

I got this log in Jenkins server indicated that update title should build

image

But in Multibranch pipeline events indicated that there is no changes detected

image

I've searched for log no changes detected but not found it in gitlab-branch-source code

Are you interested in contributing a fix?

No response

Turiok commented 2 weeks ago

Hi @hoang97 ,

This is the normal behavior of Jenkins. This is not this plugin behavior or a bug. Maybe you can use the basic-branch-build-strategies to change this behavior. Or maybe this plugin : https://plugins.jenkins.io/multibranch-build-strategy-extension/

hoang97 commented 2 weeks ago

I confused because in homepage show that merge-request events (which include title changes) should trigger build

As the web hook is now setup on your Jenkins CI by the GitLab server. Any push-events or merge-request events or tag events trigger the concerned build in Jenkins.

Should it be an option to turn on/off this behavior by default? Gitlab plugin has Rebuild open merge requests option can reflect it

image

Both basic-branch-build-strategies and multibranch-build-strategy-extension don't support this behavior. Any other suggestions?

cuong-max commented 2 weeks ago

Hi,

Any update on this bug?? I am facing same issue

Thanks in advance,

/cc @jetersen @dcendents @Turiok

Turiok commented 1 week ago

Hi @hoang97 ,

Is your MR is in draft? I'm seeing in the code this verification : https://github.com/jenkinsci/gitlab-branch-source-plugin/blob/c7f1202d7e14fdf673eb1011722aeba8b52f2a5e/src/main/java/io/jenkins/plugins/gitlabbranchsource/GitLabMergeRequestTrigger.java#L36

And I'm seeing above a check for non related code : https://github.com/jenkinsci/gitlab-branch-source-plugin/blob/c7f1202d7e14fdf673eb1011722aeba8b52f2a5e/src/main/java/io/jenkins/plugins/gitlabbranchsource/GitLabMergeRequestTrigger.java#L45C8-L45C9

image Any Ignore selected?

Can you enable log with this package "io.jenkins.plugins.gitlabbranchsource" in FINE level?

hoang97 commented 1 week ago

Here is full log of package io.jenkins.plugins.gitlabbranchsource when I changed MR title

Gitlab Branch Source Log ``` Jun 25, 2024 4:27:02 PM FINE io.jenkins.plugins.gitlabbranchsource.helpers.GitLabPipelineStatusNotifier QueueListener: Waiting > test Jun 25, 2024 4:27:02 PM FINE io.jenkins.plugins.gitlabbranchsource.GitLabWebHookListener { "object_kind" : "merge_request", "user" : { "avatarUrl" : "https://www.gravatar.com/avatar/7123494d8036f53f6768016be85438d1b5cbea4047472d81ad5bcc0ca42b3025?s=80&d=identicon", "createdAt" : null, "email" : "[REDACTED]", "id" : 2, "name" : "hoang dobao", "state" : null, "username" : "hoang97", "webUrl" : null, "bio" : null, "bot" : null, "canCreateGroup" : null, "canCreateProject" : null, "colorSchemeId" : null, "confirmedAt" : null, "currentSignInAt" : null, "customAttributes" : null, "external" : null, "externUid" : null, "extraSharedRunnersMinutesLimit" : null, "identities" : null, "isAdmin" : null, "lastActivityOn" : null, "lastSignInAt" : null, "linkedin" : null, "location" : null, "organization" : null, "privateProfile" : null, "projectsLimit" : null, "provider" : null, "publicEmail" : null, "sharedRunnersMinutesLimit" : null, "skype" : null, "themeId" : null, "twitter" : null, "twoFactorEnabled" : null, "websiteUrl" : null, "skipConfirmation" : null }, "project" : { "id" : 1, "name" : "project-1", "description" : null, "webUrl" : "http://gitlab.example.com:8929/test/project-1", "avatarUrl" : null, "gitSshUrl" : "ssh://git@gitlab.example.com:2424/test/project-1.git", "gitHttpUrl" : "http://gitlab.example.com:8929/test/project-1.git", "namespace" : "test", "visibilityLevel" : 20, "pathWithNamespace" : "test/project-1", "defaultBranch" : "main", "ciConfigPath" : null, "homepage" : "http://gitlab.example.com:8929/test/project-1", "url" : "ssh://git@gitlab.example.com:2424/test/project-1.git", "sshUrl" : "ssh://git@gitlab.example.com:2424/test/project-1.git", "httpUrl" : "http://gitlab.example.com:8929/test/project-1.git" }, "repository" : { "name" : "project-1", "url" : "ssh://git@gitlab.example.com:2424/test/project-1.git", "description" : null, "homepage" : "http://gitlab.example.com:8929/test/project-1", "git_http_url" : null, "git_ssh_url" : null, "visibility_level" : null }, "objectAttributes" : { "assigneeId" : 2, "authorId" : 1, "branchName" : null, "createdAt" : "2024-06-18T04:10:19Z", "description" : "", "id" : 3, "iid" : 3, "mergeCommitSha" : null, "mergeStatus" : "can_be_merged", "detailedMergeStatus" : "mergeable", "milestoneId" : null, "position" : null, "lockedAt" : null, "projectId" : null, "sourceBranch" : "test-mr-2", "sourceProjectId" : 1, "stCommits" : null, "stDiffs" : null, "state" : "opened", "stateId" : 1, "targetBranch" : "main", "targetProjectId" : 1, "title" : "test: mr 35", "updatedAt" : "2024-06-25T16:27:01Z", "source" : { "id" : 1, "name" : "project-1", "description" : null, "webUrl" : "http://gitlab.example.com:8929/test/project-1", "avatarUrl" : null, "gitSshUrl" : "ssh://git@gitlab.example.com:2424/test/project-1.git", "gitHttpUrl" : "http://gitlab.example.com:8929/test/project-1.git", "namespace" : "test", "visibilityLevel" : 20, "pathWithNamespace" : "test/project-1", "defaultBranch" : "main", "ciConfigPath" : null, "homepage" : "http://gitlab.example.com:8929/test/project-1", "url" : "ssh://git@gitlab.example.com:2424/test/project-1.git", "sshUrl" : "ssh://git@gitlab.example.com:2424/test/project-1.git", "httpUrl" : "http://gitlab.example.com:8929/test/project-1.git" }, "target" : { "id" : 1, "name" : "project-1", "description" : null, "webUrl" : "http://gitlab.example.com:8929/test/project-1", "avatarUrl" : null, "gitSshUrl" : "ssh://git@gitlab.example.com:2424/test/project-1.git", "gitHttpUrl" : "http://gitlab.example.com:8929/test/project-1.git", "namespace" : "test", "visibilityLevel" : 20, "pathWithNamespace" : "test/project-1", "defaultBranch" : "main", "ciConfigPath" : null, "homepage" : "http://gitlab.example.com:8929/test/project-1", "url" : "ssh://git@gitlab.example.com:2424/test/project-1.git", "sshUrl" : "ssh://git@gitlab.example.com:2424/test/project-1.git", "httpUrl" : "http://gitlab.example.com:8929/test/project-1.git" }, "lastCommit" : { "id" : "3ab02e25ce22dd318a5f78e9b823f598b6972a5c", "message" : "test\n", "timestamp" : "2024-06-23T04:46:35Z", "url" : "http://gitlab.example.com:8929/test/project-1/-/commit/3ab02e25ce22dd318a5f78e9b823f598b6972a5c", "author" : { "avatarUrl" : null, "createdAt" : null, "email" : "hoangdb1@abc.com", "id" : null, "name" : "hoangtumeo", "state" : null, "username" : null, "webUrl" : null }, "added" : null, "modified" : null, "removed" : null }, "blockingDiscussionsResolved" : true, "workInProgress" : false, "firstContribution" : true, "url" : "http://gitlab.example.com:8929/test/project-1/-/merge_requests/3", "labels" : [ { "id" : 1, "title" : "test", "color" : "#dc143c", "projectId" : 1, "createdAt" : "2024-06-18T09:49:19Z", "updatedAt" : "2024-06-18T09:49:19Z", "template" : false, "description" : null, "type" : "ProjectLabel", "groupId" : null } ], "action" : "update", "assignee" : null, "updatedById" : 2, "mergeError" : null, "mergeParams" : { "force_remove_source_branch" : "1" }, "mergeWhenPipelineSucceeds" : false, "mergeUserId" : null, "deletedAt" : null, "inProgressMergeCommitSha" : null, "lockVersion" : null, "lastEditedAt" : null, "lastEditedById" : null, "headPipelineId" : 10, "refFetched" : null, "mergeIid" : null, "totalTimeSpent" : 0, "humanTotalTimeSpent" : null, "timeChange" : 0, "timeEstimate" : 0, "humanTimeEstimate" : null, "humanTimeChange" : null, "assigneeIds" : [ 2 ], "reviewerIds" : [ 2 ], "oldrev" : null }, "labels" : [ { "id" : 1, "title" : "test", "color" : "#dc143c", "projectId" : 1, "createdAt" : "2024-06-18T09:49:19Z", "updatedAt" : "2024-06-18T09:49:19Z", "template" : false, "description" : null, "type" : "ProjectLabel", "groupId" : null } ], "changes" : { "authorId" : null, "createdAt" : null, "updatedAt" : { "previous" : "2024-06-23T04:50:24Z", "current" : "2024-06-25T16:27:01Z" }, "updatedById" : null, "title" : { "previous" : "test: mr 34", "current" : "test: mr 35" }, "description" : null, "state" : null, "milestoneId" : null, "labels" : null, "assignees" : null, "totalTimeSpent" : null, "mergeStatus" : null, "reviewers" : null }, "assignees" : [ { "avatarUrl" : "https://www.gravatar.com/avatar/7123494d8036f53f6768016be85438d1b5cbea4047472d81ad5bcc0ca42b3025?s=80&d=identicon", "createdAt" : null, "email" : "[REDACTED]", "id" : 2, "name" : "hoang dobao", "state" : null, "username" : "hoang97", "webUrl" : null } ], "reviewers" : [ { "avatarUrl" : "https://www.gravatar.com/avatar/7123494d8036f53f6768016be85438d1b5cbea4047472d81ad5bcc0ca42b3025?s=80&d=identicon", "createdAt" : null, "email" : "[REDACTED]", "id" : 2, "name" : "hoang dobao", "state" : null, "username" : "hoang97", "webUrl" : null } ], "objectKind" : "merge_request" } Jun 25, 2024 4:27:02 PM FINE io.jenkins.plugins.gitlabbranchsource.GitLabMergeRequestSCMEvent description() event:3 state:opened action:update project:test/project-1 Jun 25, 2024 4:27:02 PM FINEST io.jenkins.plugins.gitlabbranchsource.GitLabMergeRequestTrigger shouldBuild for MR-3 will be set for action update based on pipeline configuration. Jun 25, 2024 4:27:02 PM FINE io.jenkins.plugins.gitlabbranchsource.GitLabMergeRequestTrigger isMatch() result for MR-3: true Jun 25, 2024 4:27:03 PM FINE io.jenkins.plugins.gitlabbranchsource.GitLabSCMSource hoang97 -> Trusted Jun 25, 2024 4:27:03 PM FINE io.jenkins.plugins.gitlabbranchsource.GitLabSCMSource root -> Trusted Jun 25, 2024 4:27:03 PM FINE io.jenkins.plugins.gitlabbranchsource.GitLabMergeRequestSCMEvent description() event:3 state:opened action:update project:test/project-1 Jun 25, 2024 4:27:03 PM FINEST io.jenkins.plugins.gitlabbranchsource.GitLabMergeRequestTrigger shouldBuild for MR-3 will be set for action update based on pipeline configuration. Jun 25, 2024 4:27:03 PM FINE io.jenkins.plugins.gitlabbranchsource.GitLabMergeRequestTrigger isMatch() result for MR-3: true Jun 25, 2024 4:27:11 PM FINE io.jenkins.plugins.gitlabbranchsource.helpers.GitLabPipelineStatusNotifier RunListener: Started > test #53 Jun 25, 2024 4:27:12 PM FINE io.jenkins.plugins.gitlabbranchsource.helpers.GitLabPipelineStatusNotifier RunListener: Complete > test #53 Jun 25, 2024 4:27:32 PM FINE io.jenkins.plugins.gitlabbranchsource.GitLabMergeRequestSCMEvent description() event:3 state:opened action:update project:test/project-1 Jun 25, 2024 4:27:32 PM FINEST io.jenkins.plugins.gitlabbranchsource.GitLabMergeRequestTrigger shouldBuild for MR-3 will be set for action update based on pipeline configuration. Jun 25, 2024 4:27:32 PM FINE io.jenkins.plugins.gitlabbranchsource.GitLabMergeRequestTrigger isMatch() result for MR-3: true Jun 25, 2024 4:27:32 PM FINE io.jenkins.plugins.gitlabbranchsource.GitLabSCMSource hoang97 -> Trusted Jun 25, 2024 4:27:32 PM FINE io.jenkins.plugins.gitlabbranchsource.GitLabSCMSource root -> Trusted Jun 25, 2024 4:27:32 PM FINE io.jenkins.plugins.gitlabbranchsource.GitLabMergeRequestSCMEvent description() event:3 state:opened action:update project:test/project-1 Jun 25, 2024 4:27:32 PM FINEST io.jenkins.plugins.gitlabbranchsource.GitLabMergeRequestTrigger shouldBuild for MR-3 will be set for action update based on pipeline configuration. Jun 25, 2024 4:27:32 PM FINE io.jenkins.plugins.gitlabbranchsource.GitLabMergeRequestTrigger isMatch() result for MR-3: true ```

As you can see, isMatch() function return true for this event.