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 88 forks source link

NoSuchMethodError: org.gitlab4j.api.ProjectApi.addHook(Object, String, ProjectHook, boolean, String) #435

Closed pennello closed 1 month ago

pennello commented 2 months ago

Jenkins and plugins versions report

Environment ```text Jenkins: 2.462.1 OS: Linux - 6.1.85+ Java: 17.0.12 - Eclipse Adoptium (OpenJDK 64-Bit Server VM) --- analysis-model-api:12.4.0 ansicolor:1.0.4 ant:511.v0a_a_1a_334f41b_ 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 bootstrap5-api:5.3.3-1 bouncycastle-api:2.30.1.78.1-248.ve27176eb_46cb_ branch-api:2.1178.v969d9eb_c728e build-time-blame:75.v44a_51cc97cdd-2.1.0 build-timeout:1.33 buildtriggerbadge:251.vdf6ef853f3f5 caffeine-api:3.1.8-133.v17b_1ff2e0599 checks-api:2.2.0 cloudbees-folder:6.942.vb_43318a_156b_2 command-launcher:115.vd8b_301cc15d0 commons-compress-api:1.26.1-2 commons-lang3-api:3.14.0-76.vda_5591261cfe commons-text-api:1.12.0-129.v99a_50df237f7 config-file-provider:973.vb_a_80ecb_9a_4d0 copyartifact:749.vfb_dca_a_9b_6549 coverage:1.16.1 credentials:1371.vfee6b_095f0a_3 credentials-binding:681.vf91669a_32e45 dark-theme:479.v661b_1b_911c01 data-tables-api:2.0.8-1 disk-usage:1.2 display-url-api:2.204.vf6fddd8a_8b_e9 docker-commons:443.v921729d5611d docker-workflow:580.vc0c340686b_54 durable-task:568.v8fb_5c57e8417 echarts-api:5.5.0-1 eddsa-api:0.3.0-4.v84c6f0f4969e email-ext:1814.v404722f34263 external-monitor-job:215.v2e88e894db_f8 flatpickr-api:4.6.13-5.v534d8025a_a_59 font-awesome-api:6.5.2-1 forensics-api:2.4.0 git:5.3.0 git-client:5.0.0 git-server:126.v0d945d8d2b_39 github:1.40.0 github-api:1.321-468.v6a_9f5f2d5a_7e github-branch-source:1793.v1831e9c68d77 gitlab-api:5.6.0-97.v6603a_83f8690 gitlab-branch-source:704.vc7f1202d7e14 gitlab-plugin:1.8.1 global-build-stats:307.v03dce5a_f8943 google-compute-engine:4.575.v6969b_7c435eb_ google-login:109.v022b_cf87b_e5b_ google-oauth-plugin:1.330.vf5e86021cb_ec gson-api:2.11.0-41.v019fcf6125dc handy-uri-templates-2-api:2.1.8-30.v7e777411b_148 instance-identity:185.v303dc7c645f9 ionicons-api:74.v93d5eb_813d5f jackson2-api:2.17.0-379.v02de8ec9f64c jacoco:3.3.6 jakarta-activation-api:2.1.3-1 jakarta-mail-api:2.1.3-1 javadoc:280.v050b_5c849f69 javax-activation-api:1.2.0-7 javax-mail-api:1.6.2-10 jaxb:2.3.9-1 jdk-tool:80.v8a_dee33ed6f0 jersey2-api:2.44-151.v6df377fff741 jjwt-api:0.11.5-112.ve82dfb_224b_a_d jmh-report:0.9.0 joda-time-api:2.12.7-29.v5a_b_e3a_82269a_ jquery:1.12.4-1 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:1284.vf75d778f98c5 junit-attachments:239.v9e003a_c80a_8c kubernetes:4285.v50ed5f624918 kubernetes-client-api:6.10.0-240.v57880ce8b_0b_2 kubernetes-credentials:174.va_36e093562d9 mailer:472.vf7c289a_4b_420 mask-passwords:173.v6a_077a_291eb_5 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 oauth-credentials:0.653.v14cf2088e950 okhttp-api:4.11.0-172.vda_da_1feeb_c6e pagerduty:0.7.1 parameterized-scheduler:277.v61a_4b_a_49a_c5c pipeline-build-step:540.vb_e8849e1a_b_d8 pipeline-github-lib:61.v629f2cc41d83 pipeline-graph-analysis:216.vfd8b_ece330ca_ 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 pipeline-utility-steps:2.17.0 plain-credentials:183.va_de8f1dd5a_2b_ plugin-util-api:4.1.0 prism-api:1.29.0-15 resource-disposer:0.23 scm-api:696.v778d637b_a_762 script-security:1341.va_2819b_414686 sidebar-link:2.4.1 slack:734.v7f9ec8b_66975 snakeyaml-api:2.2-121.v5a_68b_9300b_d4 ssh-credentials:343.v884f71d78167 ssh-slaves:2.973.v0fa_8c0dea_f9f sshd:3.330.vc866a_8389b_58 structs:338.v848422169819 theme-manager:262.vc57ee4a_eda_5d throttle-concurrents:2.14 timestamper:1.27 token-macro:400.v35420b_922dcb_ trilead-api:2.147.vb_73cc728a_32e variant:60.v7290fc0eb_b_cd workflow-aggregator:600.vb_57cdd26fdd7 workflow-api:1332.vc21122317a_8e workflow-basic-steps:1058.vcb_fc1e3a_21a_9 workflow-cps:3922.va_f73b_7c4246b_ workflow-durable-task-step:1364.v2fd76fb_6fd41 workflow-job:1436.vfa_244484591f workflow-multibranch:795.ve0cb_1f45ca_9a_ workflow-scm-step:427.v4ca_6512e7df1 workflow-step-api:678.v3ee58b_469476 workflow-support:920.v59f71ce16f04 ```

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

Reproduction steps

We manage our Jenkins job definitions with Terraform and the Jenkins API. Whenever we try to push up new configuration, it fails. Please find further details below.

Expected Results

Job definition updates without error. : ]

Actual Results

Exception!

java.lang.NoSuchMethodError: 'org.gitlab4j.api.models.ProjectHook org.gitlab4j.api.ProjectApi.addHook(java.lang.Object, java.lang.String, org.gitlab4j.api.models.ProjectHook, boolean, java.lang.String)'
at PluginClassLoader for gitlab-branch-source//io.jenkins.plugins.gitlabbranchsource.GitLabHookCreator.createWebHookWhenMissing(GitLabHookCreator.java:231)
at PluginClassLoader for gitlab-branch-source//io.jenkins.plugins.gitlabbranchsource.GitLabHookCreator.register(GitLabHookCreator.java:105)
at PluginClassLoader for gitlab-branch-source//io.jenkins.plugins.gitlabbranchsource.GitLabSCMSource.afterSave(GitLabSCMSource.java:782)
at PluginClassLoader for branch-api//jenkins.branch.MultiBranchProject.fireSCMSourceAfterSave(MultiBranchProject.java:932)
at PluginClassLoader for branch-api//jenkins.branch.MultiBranchProject.onLoad(MultiBranchProject.java:248)
at PluginClassLoader for workflow-multibranch//org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject.onLoad(WorkflowMultiBranchProject.java:85)
at hudson.model.AbstractItem$1.call(AbstractItem.java:931)
at hudson.model.AbstractItem$1.call(AbstractItem.java:929)
at hudson.model.Items.whileUpdatingByXml(Items.java:132)
at hudson.model.AbstractItem.updateByXml(AbstractItem.java:929)
at hudson.model.AbstractItem.doConfigDotXml(AbstractItem.java:857)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:416)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:429)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:211)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:138)
at org.kohsuke.stapler.MetaClass$11.doDispatch(MetaClass.java:644)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:61)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:827)

Anything else?

We recently updated our Jenkins plugins, notably

Specifically, I believe the gitlab4j authors made a backwards-incompatible change in 224f4c5 in which the signature of org.gitlab4j.api.ProjectApi.addHook changed its boolean argument from boolean to Boolean. I believe the GitLabHookCreator is still trying to use the old/gone signature here: https://github.com/jenkinsci/gitlab-branch-source-plugin/blob/67b7169092caba41933f8a90fed28ea3d027f6dd/src/main/java/io/jenkins/plugins/gitlabbranchsource/GitLabHookCreator.java#L231

Obviously, it's not great that addHook got changed in a backwards-incompatible way. But it seems like it would be useful for the hook creator in this plugin to enjoy an update that allows it to use the new method.

Are you interested in contributing a fix?

Would that it were.

waeller commented 1 month ago

Same here.

It worked again after manually downloading and installing version 5.3 of the Gitlab API Plugin from https://updates.jenkins.io/download/plugins/gitlab-api/

pennello commented 1 month ago

Thanks @waeller ; we'll give that a try. Our less-than-ideal workaround was to disable web hook management on the plugin (which is the code path in which it tries to call addHook), run our Terraform updates, and then re-enable web hook management!

Takaranoao commented 1 month ago

Same here.

It worked again after manually downloading and installing version 5.3 of the Gitlab API Plugin from https://updates.jenkins.io/download/plugins/gitlab-api/

Same problem, this solution works.

officeprofile1234 commented 1 month ago

same here, rollback helped.

nathan-objective commented 1 month ago

We have also hit this problem in our environment.

Updating the version of the BOM for the plugin worked for us. The version changes are listed in PR #438.

pennello commented 1 month ago

Awesome @nathan-objective !

Flexba commented 1 month ago

We also hat that issue in our environment and downgraded to fix it.

Thanks for the PR @nathan-objective !

jakegt1 commented 1 month ago

I guess no one is around to merge nathan's change?

basil commented 1 month ago

Fixed in https://github.com/jenkinsci/gitlab-branch-source-plugin/pull/438. Released in 710.v6f19df32544b_.