jenkinsci/git-changelog-plugin

Git change log plugin error RevisionSyntaxException in pipeline

Closed this issue · 10 comments

  • Plugin version - 2.6

  • Jenkins version - 2.117

  • Configuration:
    def changelogString = gitChangelog from: [type: 'COMMIT', value: "${last}"], returnType: 'CONTEXT', template: '''
    <h1> Git Changelog changelog </h1>
    Changelog of Git Changelog.
    {{#tags}}
    {{name}}
    {{#commits}}
    {{hash}} {{authorName}} {{commitTime}}
    {{{messageTitle}}}
    {{#messageBodyItems}}
    <li> {{.}}</li>
    {{/messageBodyItems}}


    {{/commits}}
    {{/tags}}''', to: [type: 'COMMIT', value: "${previous}"]
    currentBuild.description = changelogString

  • Expected result: successful job with changelog in the description.

  • Actual result: failed job and no changelog in the description.

  • Build Logs:
    last: a8b43357b4bad35cf5f43315b087a00a8551ae5e # debug string
    Previous: a8b43357b4bad35cf5f43315b087a00a8551ae5e # debug string

[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (gather_changelog)
[Pipeline] gitChangelog
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
org.eclipse.jgit.errors.RevisionSyntaxException:a8b43357b4bad35cf5f43315b087a00a8551ae5e

at org.eclipse.jgit.lib.Repository.resolve(Repository.java:755)
at org.eclipse.jgit.lib.Repository.resolve(Repository.java:435)
at se.bjurr.gitchangelog.internal.git.GitRepo.getCommit(GitRepo.java:99)

Caused: se.bjurr.gitchangelog.api.exceptions.GitChangelogRepositoryException:
at se.bjurr.gitchangelog.internal.git.GitRepo.getCommit(GitRepo.java:101)
at se.bjurr.gitchangelog.api.GitChangelogApi.getId(GitChangelogApi.java:480)
at se.bjurr.gitchangelog.api.GitChangelogApi.getChangelog(GitChangelogApi.java:429)
at se.bjurr.gitchangelog.api.GitChangelogApi.getChangelog(GitChangelogApi.java:77)
at org.jenkinsci.plugins.gitchangelog.steps.GitChangelogStep.perform(GitChangelogStep.java:401)
at org.jenkinsci.plugins.gitchangelog.steps.GitChangelogStep.access$000(GitChangelogStep.java:47)
at org.jenkinsci.plugins.gitchangelog.steps.GitChangelogStep$1$1.call(GitChangelogStep.java:325)
at hudson.FilePath.act(FilePath.java:1096)
at org.jenkinsci.plugins.gitchangelog.steps.GitChangelogStep$1.run(GitChangelogStep.java:329)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1$1.call(SynchronousNonBlockingStepExecution.java:49)
at hudson.security.ACL.impersonate(ACL.java:290)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1.run(SynchronousNonBlockingStepExecution.java:46)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE

What happens if you change:
def changelogString = gitChangelog from: [type: 'COMMIT', value: "${last}"], returnType: 'CONTEXT',
To:
def changelogString = gitChangelog from: [type: 'COMMIT', value: last.trim()], returnType: 'CONTEXT',

?

@tomasbjerre
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: unclassified field org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper description
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.unclassifiedField(SandboxInterceptor.java:397)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onSetProperty(SandboxInterceptor.java:235)
at org.kohsuke.groovy.sandbox.impl.Checker$7.call(Checker.java:344)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedSetProperty(Checker.java:351)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.setProperty(SandboxInvoker.java:33)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawSet(PropertyAccessBlock.java:24)
at WorkflowScript.run(WorkflowScript:30)
at cps.transform(Native Method)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.set(PropertyishBlock.java:88)
at com.cloudbees.groovy.cps.impl.AssignmentBlock$ContinuationImpl.assignAndDone(AssignmentBlock.java:70)
at sun.reflect.GeneratedMethodAccessor446.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
at com.cloudbees.groovy.cps.impl.LocalVariableBlock$LocalVariable.get(LocalVariableBlock.java:39)
at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
at com.cloudbees.groovy.cps.impl.LocalVariableBlock.evalLValue(LocalVariableBlock.java:28)
at com.cloudbees.groovy.cps.LValueBlock$BlockImpl.eval(LValueBlock.java:55)
at com.cloudbees.groovy.cps.LValueBlock.eval(LValueBlock.java:16)
at com.cloudbees.groovy.cps.Next.step(Next.java:83)
at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174)
at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163)
at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122)
at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261)
at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:35)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:32)
at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:331)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:82)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:243)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:231)
at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131)
at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

But there is not pending approval scripts in scriptApproval

Also "last" variable creates like this.
sh 'git rev-parse HEAD > lastBuild'
last = readFile "./lastBuild"

You must make sure the RejectedAccessException is not caught in your pipeline. Just throw it or else Jenkins will not create anything to approve.

How do you refer to description? Do you use currentBuild.description = ... ?

yes

def changelogString = gitChangelog from: [type: 'COMMIT', value: last.trim()], returnType: 'CONTEXT', template: ''' ''' currentBuild.description = changelogString

https://issues.jenkins-ci.org/browse/JENKINS-45308

Jess writes:

unclassified errors do not indicate that some signature is being rejected. They indicate that Jenkins cannot figure out what signature you were even trying to call.

Job now green, but in the description i see weird output.

se.bjurr.gitchangelog.api.model.Changelog@41e41fab

change:
returnType: 'CONTEXT'
to:
returnType: 'STRING'

Thanks now everything is working fine, greatly appreciate it.