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
124 stars 93 forks source link

MR jobs not created if repo is a fork #432

Closed csrichter closed 3 months ago

csrichter commented 3 months ago

Jenkins and plugins versions report

Environment ```text Jenkins: 2.452.3 OS: Windows Server 2016 - 10.0 Java: 21.0.3 - Eclipse Adoptium (OpenJDK 64-Bit Server VM) --- active-directory:2.35 analysis-model-api:12.4.0 antisamy-markup-formatter:162.v0e6ec0fcfcf6 apache-httpcomponents-client-4-api:4.5.14-208.v438351942757 apache-httpcomponents-client-5-api:5.3.1-110.v77252fb_d4da_5 asm-api:9.7-33.v4d23ef79fcc8 authentication-tokens:1.119.v50285141b_7e1 authorize-project:1.7.2 basic-branch-build-strategies:81.v05e333931c7d blueocean-autofavorite:1.2.5 blueocean-commons:1.27.14 blueocean-config:1.27.14 blueocean-core-js:1.27.14 blueocean-dashboard:1.27.14 blueocean-display-url:2.4.3 blueocean-events:1.27.14 blueocean-git-pipeline:1.27.14 blueocean-i18n:1.27.14 blueocean-jwt:1.27.14 blueocean-personalization:1.27.14 blueocean-pipeline-api-impl:1.27.14 blueocean-pipeline-editor:1.27.14 blueocean-pipeline-scm-api:1.27.14 blueocean-rest:1.27.14 blueocean-rest-impl:1.27.14 blueocean-web:1.27.14 bootstrap5-api:5.3.3-1 bouncycastle-api:2.30.1.78.1-248.ve27176eb_46cb_ branch-api:2.1169.va_f810c56e895 build-timeout:1.33 caffeine-api:3.1.8-133.v17b_1ff2e0599 checks-api:2.2.0 cloudbees-folder:6.928.v7c780211d66e command-launcher:107.v773860566e2e commons-lang3-api:3.14.0-76.vda_5591261cfe commons-text-api:1.12.0-119.v73ef73f2345d copyartifact:749.vfb_dca_a_9b_6549 coverage:1.16.1 credentials:1371.vfee6b_095f0a_3 credentials-binding:681.vf91669a_32e45 data-tables-api:2.0.8-1 display-url-api:2.204.vf6fddd8a_8b_e9 dtkit-api:3.0.2 durable-task:555.v6802fe0f0b_82 echarts-api:5.5.0-1 eddsa-api:0.3.0-4.v84c6f0f4969e email-ext:1814.v404722f34263 external-monitor-job:215.v2e88e894db_f8 favorite:2.218.vd60382506538 font-awesome-api:6.5.2-1 forensics-api:2.4.0 git:5.2.2 git-client:5.0.0 git-forensics:2.1.0 git-server:126.v0d945d8d2b_39 github:1.39.0 github-api:1.318-461.v7a_c09c9fa_d63 github-branch-source:1790.v5a_7859812c8d gitlab-api:5.3.0-91.v1f9a_fda_d654f gitlab-branch-source:999999-SNAPSHOT (private-8ca2b2c7-c.richter) 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.36 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 jdk-tool:73.vddf737284550 jenkins-design-language:1.27.14 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 jsch:0.2.16-86.v42e010d9484b_ 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 lockable-resources:1255.vf48745da_35d0 mailer:472.vf7c289a_4b_420 mapdb-api:1.0.9-40.v58107308b_7a_7 mathworks-polyspace:1.0.11 matrix-auth:3.2.2 matrix-project:832.va_66e270d2946 metrics:4.2.21-451.vd51df8df52ec mina-sshd-api-common:2.13.1-117.v2f1a_b_66ff91d mina-sshd-api-core:2.13.1-117.v2f1a_b_66ff91d mstest:1.0.5 okhttp-api:4.11.0-172.vda_da_1feeb_c6e pam-auth:1.11 pipeline-build-step:540.vb_e8849e1a_b_d8 pipeline-graph-analysis:216.vfd8b_ece330ca_ pipeline-graph-view:313.v1322ce83d680 pipeline-groovy-lib:727.ve832a_9244dfa_ pipeline-input-step:495.ve9c153f6067b_ pipeline-milestone-step:119.vdfdc43fc3b_9a_ pipeline-model-api:2.2205.vc9522a_9d5711 pipeline-model-definition:2.2205.vc9522a_9d5711 pipeline-model-extensions:2.2205.vc9522a_9d5711 pipeline-rest-api:2.34 pipeline-stage-step:312.v8cd10304c27a_ pipeline-stage-tags-metadata:2.2205.vc9522a_9d5711 pipeline-stage-view:2.34 plain-credentials:183.va_de8f1dd5a_2b_ plot:2.1.12 plugin-util-api:4.1.0 powershell:2.1 prism-api:1.29.0-15 prometheus:773.v3b_62d8178eec pubsub-light:1.18 resource-disposer:0.23 role-strategy:727.vd344b_eec783d scm-api:690.vfc8b_54395023 scmskip:50.vfb_3a_f04242a_a_ scoring-load-balancer:111.v0ddf136a_5b_87 script-security:1341.va_2819b_414686 snakeyaml-api:2.2-111.vc6598e30cc65 sse-gateway:1.27 ssh-agent:367.vf9076cd4ee21 ssh-credentials:337.v395d2403ccd4 sshd:3.330.vc866a_8389b_58 structs:338.v848422169819 subversion:1269.v53185011cd9f timestamper:1.27 token-macro:400.v35420b_922dcb_ trilead-api:2.147.vb_73cc728a_32e variant:60.v7290fc0eb_b_cd view-job-filters:382.vdf2d5e3f02f0 warnings-ng:11.3.0 workflow-aggregator:600.vb_57cdd26fdd7 workflow-api:1322.v857eeeea_9902 workflow-basic-steps:1058.vcb_fc1e3a_21a_9 workflow-cps:3908.vd6b_b_5a_a_54010 workflow-cps-global-lib:612.v55f2f80781ef workflow-durable-task-step:1360.v82d13453da_a_f workflow-job:1400.v7fd111b_ec82f workflow-multibranch:783.787.v50539468395f workflow-scm-step:427.v4ca_6512e7df1 workflow-step-api:678.v3ee58b_469476 workflow-support:920.v59f71ce16f04 ws-cleanup:0.46 xunit:3.1.4 ``` i created a patched build of gitlab-branch-source that forces "buildMRForksNotMirror()" to true in GitLabSCMCourceContext.java and that works as expected. Before i was using 704.vc7f1202d7e14

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

Windows Server 2016

Reproduction steps

  1. create repository in GitLab
  2. create fork for that repo
  3. create MR in the fork that targets the fork

Expected Results

jenkins should create MR jobs in the forked repository through "discover merge requests from origin"

Actual Results

jenkins doen't create MR jobs and instead prints the message:

Ignoring merge requests as project is a mirror...

Anything else?

i think the config option "Build MRs of forks that are not mirrors" would fix this, but that is only available on "discover merge requests from forks" not "discover merge requests from origin"

this is related to https://github.com/jenkinsci/gitlab-branch-source-plugin/issues/167

Are you interested in contributing a fix?

No response

csrichter commented 3 months ago

maybe always building local MRs (MRs where source and target branch are in the current repo), independant of the repositories fork status should be default for "discover from origin"

csrichter commented 3 months ago

i think this use case is covered by selecting both "discover from origin" and "discover from forks" (with the checkbox "Build MRs of forks that are not mirrors")

this works for repositiories that are forks, but leads to the error https://github.com/jenkinsci/gitlab-branch-source-plugin/issues/433 for repos that are not forks