jenkinsci / git-changelog-plugin

Creates a changelog, or release notes, based on Git commits between 2 revisions.
https://plugins.jenkins.io/git-changelog
MIT License
56 stars 33 forks source link

Errors generating a changelog #88

Closed Taelyn closed 1 month ago

Taelyn commented 1 month ago

Jenkins and plugins versions report

Environment ```text Jenkins: 2.476 OS: Windows Server 2022 - 10.0 Java: 21.0.4 - Oracle Corporation (Java HotSpot(TM) 64-Bit Server VM) --- analysis-model-api:12.5.0 antisamy-markup-formatter:162.v0e6ec0fcfcf6 apache-httpcomponents-client-4-api:4.5.14-208.v438351942757 apache-httpcomponents-client-5-api:5.3.1-117.v4d95117cd34f asm-api:9.7-33.v4d23ef79fcc8 bootstrap5-api:5.3.3-1 bouncycastle-api:2.30.1.78.1-248.ve27176eb_46cb_ branch-api:2.1178.v969d9eb_c728e build-timeout:1.33 caffeine-api:3.1.8-133.v17b_1ff2e0599 checks-api:2.2.1 cloudbees-folder:6.951.v5f91d88d76b_b_ command-launcher:115.vd8b_301cc15d0 commons-lang3-api:3.17.0-84.vb_b_938040b_078 commons-text-api:1.12.0-129.v99a_50df237f7 compress-artifacts:109.v98a_db_d3cb_72c conditional-buildstep:1.4.3 coverage:1.16.1 credentials:1371.vfee6b_095f0a_3 credentials-binding:681.vf91669a_32e45 dark-theme:479.v661b_1b_911c01 dashboard-view:2.517.v776a_b_811a_b_4e data-tables-api:2.1.6-1 disable-job-button:1.v9db_352414f90 discord-notifier:999999-SNAPSHOT (private-08/11/2024 14:01-sedev) display-url-api:2.204.vf6fddd8a_8b_e9 dtkit-api:3.0.2 durable-task:577.v2a_8a_4b_7c0247 echarts-api:5.5.1-1 eddsa-api:0.3.0-4.v84c6f0f4969e email-ext:1814.v404722f34263 embeddable-build-status:487.va_0ef04c898a_2 envinject:2.919.v009a_a_1067cd0 envinject-api:1.199.v3ce31253ed13 font-awesome-api:6.6.0-2 forensics-api:2.5.0 git:5.4.1 git-changelog:3.38 git-client:6.0.0 github:1.40.1-SNAPSHOT (private-454995d3-sedev) github-api:1.321-478.vc9ce627ce001 github-branch-source:1797.v86fdb_4d57d43 github-release:10.vc8cd6962b_e7f gson-api:2.11.0-41.v019fcf6125dc 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 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 jjwt-api:0.11.5-112.ve82dfb_224b_a_d joda-time-api:2.13.0-85.vb_64d1c2921f1 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:1300.v03d9d8a_cf1fb_ ldap:733.vd3700c27b_043 mailer:472.vf7c289a_4b_420 matrix-auth:3.2.2 matrix-project:832.va_66e270d2946 maven-plugin:3.23 metrics:4.2.21-451.vd51df8df52ec mina-sshd-api-common:2.13.2-125.v200281b_61d59 mina-sshd-api-core:2.13.2-125.v200281b_61d59 msbuild:1.34 mstest:1.0.5 mstestrunner:1.5.0 nuget:1.1 nunit:485.ve8a_85357320d okhttp-api:4.11.0-181.v1de5b_83857df 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:340.v28cecee8b_25f pipeline-groovy-lib:730.ve57b_34648c63 pipeline-input-step:495.ve9c153f6067b_ pipeline-milestone-step:119.vdfdc43fc3b_9a_ pipeline-model-api:2.2214.vb_b_34b_2ea_9b_83 pipeline-model-definition:2.2214.vb_b_34b_2ea_9b_83 pipeline-model-extensions:2.2214.vb_b_34b_2ea_9b_83 pipeline-stage-step:312.v8cd10304c27a_ pipeline-stage-tags-metadata:2.2214.vb_b_34b_2ea_9b_83 plain-credentials:183.va_de8f1dd5a_2b_ plugin-util-api:4.1.0 postbuild-task:1.9 powershell:2.1 prism-api:1.29.0-17 resource-disposer:0.23 run-condition:1.7 scm-api:696.v778d637b_a_762 script-security:1362.v67dc1f0e1b_b_3 snakeyaml-api:2.3-123.v13484c65210a_ 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 timestamper:1.27 token-macro:400.v35420b_922dcb_ trilead-api:2.147.vb_73cc728a_32e variant:60.v7290fc0eb_b_cd warnings-ng:11.6.0 workflow-aggregator:600.vb_57cdd26fdd7 workflow-api:1336.vee415d95c521 workflow-basic-steps:1058.vcb_fc1e3a_21a_9 workflow-cps:3961.ve48ee2c44a_b_3 workflow-durable-task-step:1371.vb_7cec8f3b_95e 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 ws-cleanup:0.46 ```

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

Windows Server 2022

Reproduction steps

Just generate a changelog

Expected Results

-

Actual Results

00:01:06.048 Creating changelog CHANGELOG.mdjava.lang.IllegalAccessError: class se.bjurr.gitchangelog.internal.git.GitRepo tried to access private method 'org.eclipse.jgit.lib.Ref org.eclipse.jgit.lib.Repository.peel(org.eclipse.jgit.lib.Ref)' (se.bjurr.gitchangelog.internal.git.GitRepo is in unnamed module of loader 'PluginClassLoader for git-changelog' @69d621ef; org.eclipse.jgit.lib.Repository is in unnamed module of loader 'PluginClassLoader for git-client' @4b91ba1f) 00:01:06.048 at PluginClassLoader for git-changelog//se.bjurr.gitchangelog.internal.git.GitRepo.getPeeledObjectId(GitRepo.java:171) 00:01:06.048 at PluginClassLoader for git-changelog//se.bjurr.gitchangelog.internal.git.GitRepo.findRef(GitRepo.java:164) 00:01:06.048 at PluginClassLoader for git-changelog//se.bjurr.gitchangelog.internal.git.GitRepo.getRef(GitRepo.java:149) 00:01:06.048 at PluginClassLoader for git-changelog//se.bjurr.gitchangelog.internal.git.GitRepo.firstCommit(GitRepo.java:242) 00:01:06.048 at PluginClassLoader for git-changelog//se.bjurr.gitchangelog.internal.git.GitRepo.getCommit(GitRepo.java:104) 00:01:06.048 at PluginClassLoader for git-changelog//se.bjurr.gitchangelog.api.GitChangelogApi.getFrom(GitChangelogApi.java:776) 00:01:06.048 at PluginClassLoader for git-changelog//se.bjurr.gitchangelog.api.GitChangelogApi.getChangelog(GitChangelogApi.java:717) 00:01:06.048 at PluginClassLoader for git-changelog//se.bjurr.gitchangelog.api.GitChangelogApi.getChangelog(GitChangelogApi.java:90) 00:01:06.048 at PluginClassLoader for git-changelog//se.bjurr.gitchangelog.api.GitChangelogApi.render(GitChangelogApi.java:126) 00:01:06.048 at PluginClassLoader for git-changelog//se.bjurr.gitchangelog.api.GitChangelogApi.render(GitChangelogApi.java:147) 00:01:06.048 at PluginClassLoader for git-changelog//org.jenkinsci.plugins.gitchangelog.perform.RemoteCallable.call(RemoteCallable.java:183) 00:01:06.048 at PluginClassLoader for git-changelog//org.jenkinsci.plugins.gitchangelog.perform.RemoteCallable.call(RemoteCallable.java:28) 00:01:06.048 at hudson.remoting.UserRequest.perform(UserRequest.java:225) 00:01:06.048 at hudson.remoting.UserRequest.perform(UserRequest.java:50) 00:01:06.048 at hudson.remoting.Request$2.run(Request.java:391) 00:01:06.048 at hudson.remoting.InterceptingExecutorService.lambda$wrap$0(InterceptingExecutorService.java:81) 00:01:06.048 at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) 00:01:06.048 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) 00:01:06.048 at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) 00:01:06.048 at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:140) 00:01:06.048 at java.base/java.lang.Thread.run(Thread.java:1583)

Anything else?

Yesterday everything worked fine, ive updated some plugins today and this started to happen

Are you interested in contributing a fix?

No response

tomasbjerre commented 1 month ago

Looks like a classpath issue when used with those other plugins you updated.

Can you find out which other plugins you need to downgrade to make it work again?

Taelyn commented 1 month ago

Git Client v6.0.0 is the issue downgraded to v5.0.0 and it works fine

https://updates.jenkins.io/download/plugins/git-client/

Can you fix this?

MarkEWaite commented 1 month ago

Git Client v6.0.0 is the issue downgraded to v5.0.0 and it works fine

https://updates.jenkins.io/download/plugins/git-client/

Can you fix this?

The library se.bjurr.gitchangelog:changelog-lib has made the same (flawed) choice that the Jenkins git client plugin made. It has chosen to ignore the JGit deprecation of the peel method on the Repository object. JGit 7.0.0 removed the peel method from the Repository object after multiple releases where the method had been deprecated.

The library se.bjurr.gitchangelog:changelog-lib needs to be updated to replace its use of methods that are deprecated in JGit, especially those methods that have been removed in JGit 7.0.0.

Examples of the types of changes that are needed in that library are available in the git client plugin in:

The short term workaround is noted by @Taelyn - use git client plugin 5.0.0 or earlier. The fix is to update changelog-lib to use methods that exist in both older JGit and JGit 7.0.0.

tomasbjerre commented 1 month ago

I just released 2.2.0 of git-changelog-lib. And released this plugin as 3.39 with that version.

Open issue again if not working.

MarkEWaite commented 1 month ago

Thanks very much for the rapid response @tomasbjerre!

There is a complication hiding in the choice to upgrade the library to rely on JGit 7.0.0. JGit 7.0.0 requires Java 17 but the git changelog plugin supports Jenkins 2.462.1 and Jenkins 2.462.1 still supports Java 11. A few alternatives for consideration:

I think that the first alternative is likely better for the users, since they can upgrade to the latest git changelog plugin without upgrading their Jenkins controller to a weekly release.

tomasbjerre commented 1 month ago

I'm making a new release with 2.463 to require Java 17. The library already requires Java 17 because of Handlebars dependency.