jenkinsci / jenkinsci/gitlab-plugin
Jenkins null pointer exception when adding a comment to an issue or a commit with GitLab Webhook
- Dominant language
- Java
- Stars
- 1.4k
- Forks
- 615
- Avg merge
- 4h 32m
- Merged PRs (30d)
- 10
Description
### Jenkins and plugins versions report
Environment
```text
Jenkins: 2.479
OS: Linux - 6.4.0-150600.23.25-default
Java: 17.0.12 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
ant:511.v0a_a_1a_334f41b_
antisamy-markup-formatter:162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
asm-api:9.7.1-97.v4cc844130d97
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.955.v81e2a_35c08d3
commons-lang3-api:3.17.0-84.vb_b_938040b_078
commons-text-api:1.12.0-129.v99a_50df237f7
credentials:1384.vf0a_2ed06f9c6
credentials-binding:681.vf91669a_32e45
dark-theme:479.v661b_1b_911c01
display-url-api:2.204.vf6fddd8a_8b_e9
durable-task:577.v2a_8a_4b_7c0247
echarts-api:5.5.1-3
eddsa-api:0.3.0-4.v84c6f0f4969e
email-ext:1844.v3ea_a_b_842374a_
font-awesome-api:6.6.0-2
generic-webhook-trigger:2.2.5
git:5.5.2
git-client:5.0.0
github:1.40.0
github-api:1.321-468.v6a_9f5f2d5a_7e
github-branch-source:1803.v98e3d8a_c8169
gitlab-plugin:1.9.5-SNAPSHOT (private-9b66eccb-yiftah)
gradle:2.13.1
gson-api:2.11.0-85.v1f4e87273c33
instance-identity:201.vd2a_b_5a_468a_a_6
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
jaxb:2.3.9-1
jersey2-api:2.44-151.v6df377fff741
jjwt-api:0.11.5-112.ve82dfb_224b_a_d
joda-time-api:2.13.0-93.v9934da_29b_a_e9
jquery3-api:3.7.1-2
json-api:20240303-101.v7a_8666713110
json-path-api:2.9.0-118.v7f23ed82a_8b_8
junit:1307.vdd5b_2646279e
ldap:725.v3cb_b_711b_1a_ef
mailer:488.v0c9639c1a_eb_3
matrix-auth:3.2.2
matrix-project:839.vff91cd7e3a_b_2
metrics:4.2.21-451.vd51df8df52ec
mina-sshd-api-common:2.14.0-133.vcc091215a_358
mina-sshd-api-core:2.14.0-133.vcc091215a_358
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:340.v28cecee8b_25f
pipeline-groovy-lib:740.va_2701257fe8d
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:5.1.0
resource-disposer:0.24
scm-api:696.v778d637b_a_762
script-security:1365.v4778ca_84b_de5
snakeyaml-api:2.3-123.v13484c65210a_
ssh-credentials:343.v884f71d78167
ssh-slaves:2.973.v0fa_8c0dea_f9f
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
workflow-aggregator:600.vb_57cdd26fdd7
workflow-api:1336.vee415d95c521
workflow-basic-steps:1058.vcb_fc1e3a_21a_9
workflow-cps:3975.v567e2a_1ffa_22
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:930.vf51d22b_ce488
ws-cleanup:0.47
```
### What Operating System are you using (both controller, and any agents involved in the problem)?
Windows 10
OpenSUSE Leap 15.6 VM on Hyper-V
### Reproduction steps
1. run the docker-compose services in `src/docker`
2. generate an API token in GitLab and apply it to the GitLab plugin settings inside Jenkins settings panel
3. create a pipeline in Jenkins:
- enable GitLab build triggers
- generate a token for the pipeline
- enable comments in the Enabled GitLab triggers section (defaults to `Jenkins please retry a build`)
4. create a webhook in GitLab (not a Jenkins Integration)
- copy the token from the pipeline configuration to the GitLab webhook
- enable "Comments" in the trigger section
5. create an **issue or a commit** in GitLab
6. comment on it: `Jenkins please retry a build`
### Expected Results
Jenkins should quietly do nothing?
### Actual Results
null pointer exception because the return value of "com.dabsquared.gitlabjenkins.gitlab.hook.model.NoteHook.getMergeRequest()" is null
```text
docker-jenkins-1 | 2024-10-24 15:34:50.350+0000 [id=344] INFO c.d.g.webhook.GitLabWebHook#getDynamic: WebHook called with url: /project/test_pipeline
docker-jenkins-1 | 2024-10-24 15:34:50.351+0000 [id=344] INFO c.d.g.t.h.AbstractWebHookTriggerHandler#handle: test_pipeline triggered for note.
docker-jenkins-1 | 2024-10-24 15:34:50.352+0000 [id=344] WARNING o.e.j.e.n.ContextHandler$APIContext#log: Error while serving http://jenkins:8080/project/test_pipeline
docker-jenkins-1 | java.lang.NullPointerException: Cannot invoke "com.dabsquared.gitlabjenkins.gitlab.hook.model.MergeRequestObjectAttributes.getSourceProjectId()" because the return value of "com.dabsquared.gitlabjenkins.gitlab.hook.model.NoteHook.getMergeRequest()" is null
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.trigger.handler.note.NoteHookTriggerHandlerImpl.retrieveCauseData(NoteHookTriggerHandlerImpl.java:70)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.trigger.handler.note.NoteHookTriggerHandlerImpl.retrieveCauseData(NoteHookTriggerHandlerImpl.java:22)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.trigger.handler.AbstractWebHookTriggerHandler.createActions(AbstractWebHookTriggerHandler.java:108)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.trigger.handler.AbstractWebHookTriggerHandler.handle(AbstractWebHookTriggerHandler.java:59)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.trigger.handler.note.NoteHookTriggerHandlerImpl.handle(NoteHookTriggerHandlerImpl.java:40)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.trigger.handler.note.NoteHookTriggerHandlerImpl.handle(NoteHookTriggerHandlerImpl.java:22)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.GitLabPushTrigger.onPost(GitLabPushTrigger.java:559)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.webhook.build.NoteBuildAction$1.performOnPost(NoteBuildAction.java:57)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.webhook.build.BuildWebHookAction$TriggerNotifier.run(BuildWebHookAction.java:87)
docker-jenkins-1 | at hudson.security.ACL.impersonate2(ACL.java:425)
docker-jenkins-1 | at hudson.security.ACL.impersonate(ACL.java:437)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.webhook.build.NoteBuildAction.execute(NoteBuildAction.java:53)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.webhook.GitLabWebHook.getDynamic(GitLabWebHook.java:42)
docker-jenkins-1 | at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
docker-jenkins-1 | at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:484)
docker-jenkins-1 | Caused: java.lang.reflect.InvocationTargetException
docker-jenkins-1 | at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:488)
docker-jenkins-1 | at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:497)
docker-jenkins-1 | at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:218)
docker-jenkins-1 | at org.kohsuke.stapler.MetaClass$10.dispatch(MetaClass.java:588)
docker-jenkins-1 | at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:800)
docker-jenkins-1 | at org.kohsuke.stapler.Stapler.invoke(Stapler.java:938)
docker-jenkins-1 | at org.kohsuke.stapler.MetaClass$10.dispatch(MetaClass.java:590)
docker-jenkins-1 | at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:800)
docker-jenkins-1 | at org.kohsuke.stapler.Stapler.invoke(Stapler.java:938)
docker-jenkins-1 | at org.kohsuke.stapler.Stapler.invoke(Stapler.java:721)
docker-jenkins-1 | at org.kohsuke.stapler.Stapler.service(Stapler.java:253)
docker-jenkins-1 | at Jenkins Main ClassLoader//jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHolder.handle(ServletHolder.java:765)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1668)
docker-jenkins-1 | at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:204)
docker-jenkins-1 | at io.jenkins.servlet.FilterChainWrapper$2.doFilter(FilterChainWrapper.java:53)
docker-jenkins-1 | at PluginClassLoader for metrics//jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125)
docker-jenkins-1 | at io.jenkins.servlet.FilterWrapper$1.doFilter(FilterWrapper.java:42)
docker-jenkins-1 | at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:201)
docker-jenkins-1 | at jenkins.util.HttpServletFilter$1.doFilter(HttpServletFilter.java:77)
docker-jenkins-1 | at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:201)
docker-jenkins-1 | at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:207)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at jenkins.ErrorAttributeFilter.doFilter(ErrorAttributeFilter.java:29)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.webhook.GitLabWebHook$GitlabWebHookCrumbExclusion.process(GitLabWebHook.java:52)
docker-jenkins-1 | at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:128)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:94)
docker-jenkins-1 | at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:54)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)
docker-jenkins-1 | at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:145)
docker-jenkins-1 | at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:227)
docker-jenkins-1 | at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:221)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:98)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:117)
docker-jenkins-1 | at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
docker-jenkins-1 | at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:63)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2.doFilter(ChainedServletFilter2.java:111)
docker-jenkins-1 | at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:173)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at org.kohsuke.stapler.UncaughtExceptionFilter.doFilter(UncaughtExceptionFilter.java:26)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:86)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:31)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:38)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler.doHandle(ServletHandler.java:526)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.handle(ScopedHandler.java:127)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.security.SecurityHandler.handle(SecurityHandler.java:574)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.HandlerWrapper.handle(HandlerWrapper.java:124)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.nextHandle(ScopedHandler.java:197)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.SessionHandler.doHandle(SessionHandler.java:609)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.nextHandle(ScopedHandler.java:195)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.doHandle(ContextHandler.java:1035)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.nextScope(ScopedHandler.java:164)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler.doScope(ServletHandler.java:483)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.nextScope(ScopedHandler.java:162)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.SessionHandler.doScope(SessionHandler.java:586)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.nextScope(ScopedHandler.java:162)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.doScope(ContextHandler.java:956)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.handle(ScopedHandler.java:125)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.handle(ContextHandler.java:1694)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1576)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.HttpChannel.dispatch(HttpChannel.java:738)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.HttpChannel.handle(HttpChannel.java:511)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler$CoreContextHandler$CoreToNestedHandler.handle(ContextHandler.java:2862)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1060)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:597)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.server.Server.handle(Server.java:181)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:661)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:406)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:478)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:441)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:201)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:311)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:979)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1209)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1164)
docker-jenkins-1 | at java.base/java.lang.Thread.run(Unknown Source)
docker-jenkins-1 | 2024-10-24 15:34:50.356+0000 [id=344] WARNING h.i.i.InstallUncaughtExceptionHandler#handleException: Caught unhandled exception with ID 37b90a71-f1b9-4378-bc12-9ec5dbe29e35
docker-jenkins-1 | java.lang.NullPointerException: Cannot invoke "com.dabsquared.gitlabjenkins.gitlab.hook.model.MergeRequestObjectAttributes.getSourceProjectId()" because the return value of "com.dabsquared.gitlabjenkins.gitlab.hook.model.NoteHook.getMergeRequest()" is null
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.trigger.handler.note.NoteHookTriggerHandlerImpl.retrieveCauseData(NoteHookTriggerHandlerImpl.java:70)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.trigger.handler.note.NoteHookTriggerHandlerImpl.retrieveCauseData(NoteHookTriggerHandlerImpl.java:22)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.trigger.handler.AbstractWebHookTriggerHandler.createActions(AbstractWebHookTriggerHandler.java:108)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.trigger.handler.AbstractWebHookTriggerHandler.handle(AbstractWebHookTriggerHandler.java:59)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.trigger.handler.note.NoteHookTriggerHandlerImpl.handle(NoteHookTriggerHandlerImpl.java:40)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.trigger.handler.note.NoteHookTriggerHandlerImpl.handle(NoteHookTriggerHandlerImpl.java:22)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.GitLabPushTrigger.onPost(GitLabPushTrigger.java:559)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.webhook.build.NoteBuildAction$1.performOnPost(NoteBuildAction.java:57)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.webhook.build.BuildWebHookAction$TriggerNotifier.run(BuildWebHookAction.java:87)
docker-jenkins-1 | at hudson.security.ACL.impersonate2(ACL.java:425)
docker-jenkins-1 | at hudson.security.ACL.impersonate(ACL.java:437)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.webhook.build.NoteBuildAction.execute(NoteBuildAction.java:53)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.webhook.GitLabWebHook.getDynamic(GitLabWebHook.java:42)
docker-jenkins-1 | at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
docker-jenkins-1 | at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:484)
docker-jenkins-1 | at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:497)
docker-jenkins-1 | at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:218)
docker-jenkins-1 | at org.kohsuke.stapler.MetaClass$10.dispatch(MetaClass.java:588)
docker-jenkins-1 | at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:800)
docker-jenkins-1 | Caused: jakarta.servlet.ServletException
docker-jenkins-1 | at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:851)
docker-jenkins-1 | at org.kohsuke.stapler.Stapler.invoke(Stapler.java:938)
docker-jenkins-1 | at org.kohsuke.stapler.MetaClass$10.dispatch(MetaClass.java:590)
docker-jenkins-1 | at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:800)
docker-jenkins-1 | at org.kohsuke.stapler.Stapler.invoke(Stapler.java:938)
docker-jenkins-1 | at org.kohsuke.stapler.Stapler.invoke(Stapler.java:721)
docker-jenkins-1 | at org.kohsuke.stapler.Stapler.service(Stapler.java:253)
docker-jenkins-1 | at Jenkins Main ClassLoader//jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHolder.handle(ServletHolder.java:765)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1668)
docker-jenkins-1 | at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:204)
docker-jenkins-1 | at io.jenkins.servlet.FilterChainWrapper$2.doFilter(FilterChainWrapper.java:53)
docker-jenkins-1 | Caused: javax.servlet.ServletException
docker-jenkins-1 | at io.jenkins.servlet.ServletExceptionWrapper.fromJakartaServletException(ServletExceptionWrapper.java:14)
docker-jenkins-1 | at io.jenkins.servlet.FilterChainWrapper$2.doFilter(FilterChainWrapper.java:62)
docker-jenkins-1 | at PluginClassLoader for metrics//jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125)
docker-jenkins-1 | at io.jenkins.servlet.FilterWrapper$1.doFilter(FilterWrapper.java:42)
docker-jenkins-1 | Caused: jakarta.servlet.ServletException
docker-jenkins-1 | at io.jenkins.servlet.ServletExceptionWrapper.toJakartaServletException(ServletExceptionWrapper.java:9)
docker-jenkins-1 | at io.jenkins.servlet.FilterWrapper$1.doFilter(FilterWrapper.java:53)
docker-jenkins-1 | at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:201)
docker-jenkins-1 | at jenkins.util.HttpServletFilter$1.doFilter(HttpServletFilter.java:77)
docker-jenkins-1 | at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:201)
docker-jenkins-1 | at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:207)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at jenkins.ErrorAttributeFilter.doFilter(ErrorAttributeFilter.java:29)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at PluginClassLoader for gitlab-plugin//com.dabsquared.gitlabjenkins.webhook.GitLabWebHook$GitlabWebHookCrumbExclusion.process(GitLabWebHook.java:52)
docker-jenkins-1 | at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:128)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:94)
docker-jenkins-1 | at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:54)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)
docker-jenkins-1 | at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:145)
docker-jenkins-1 | at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:227)
docker-jenkins-1 | at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:221)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:98)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:117)
docker-jenkins-1 | at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
docker-jenkins-1 | at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:63)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2$1.doFilter(ChainedServletFilter2.java:99)
docker-jenkins-1 | at hudson.security.ChainedServletFilter2.doFilter(ChainedServletFilter2.java:111)
docker-jenkins-1 | at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:173)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at org.kohsuke.stapler.UncaughtExceptionFilter.doFilter(UncaughtExceptionFilter.java:26)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:86)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:31)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:38)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler.doHandle(ServletHandler.java:526)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.handle(ScopedHandler.java:127)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.security.SecurityHandler.handle(SecurityHandler.java:574)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.HandlerWrapper.handle(HandlerWrapper.java:124)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.nextHandle(ScopedHandler.java:197)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.SessionHandler.doHandle(SessionHandler.java:609)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.nextHandle(ScopedHandler.java:195)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.doHandle(ContextHandler.java:1035)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.nextScope(ScopedHandler.java:164)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.servlet.ServletHandler.doScope(ServletHandler.java:483)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.nextScope(ScopedHandler.java:162)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.SessionHandler.doScope(SessionHandler.java:586)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.nextScope(ScopedHandler.java:162)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.doScope(ContextHandler.java:956)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ScopedHandler.handle(ScopedHandler.java:125)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler.handle(ContextHandler.java:1694)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1576)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.HttpChannel.dispatch(HttpChannel.java:738)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.HttpChannel.handle(HttpChannel.java:511)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.ee9.nested.ContextHandler$CoreContextHandler$CoreToNestedHandler.handle(ContextHandler.java:2862)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1060)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:597)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.server.Server.handle(Server.java:181)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:661)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:406)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:478)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:441)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:201)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:311)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:979)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1209)
docker-jenkins-1 | at Jenkins Main ClassLoader//org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1164)
docker-jenkins-1 | at java.base/java.lang.Thread.run(Unknown Source)
```
### Anything else?
[GitLab Comment Webhook documentation](https://docs.gitlab.com/17.5/ee/user/project/integrations/webhook_events.html#comment-events) suggests it send webhooks when adding comments to:
- commits
- merge requests
- issues
- snippets
webhook json data sent when note added to issue
{
"object_kind": "note",
"event_type": "note",
"user": {
"id": 1,
"name": "Administrator",
"username": "root",
"avatar_url": "https://www.gravatar.com/avatar/8305e7e0c986a93a16f0f65987d392371f6cd64e8825f1eafab86ec8769db86c?s=80&d=identicon",
"email": "[REDACTED]"
},
"project_id": 1,
"project": {
"id": 1,
"name": "test_project",
"description": null,
"web_url": "http://localhost/root/test_project",
"avatar_url": null,
"git_ssh_url": "ssh://git@localhost:55522/root/test_project.git",
"git_http_url": "http://localhost/root/test_project.git",
"namespace": "Administrator",
"visibility_level": 0,
"path_with_namespace": "root/test_project",
"default_branch": "main",
"ci_config_path": null,
"homepage": "http://localhost/root/test_project",
"url": "ssh://git@localhost:55522/root/test_project.git",
"ssh_url": "ssh://git@localhost:55522/root/test_project.git",
"http_url": "http://localhost/root/test_project.git"
},
"object_attributes": {
"attachment": null,
"author_id": 1,
"change_position": null,
"commit_id": null,
"created_at": "2024-10-24 15:34:50 UTC",
"discussion_id": "514723d6c19f1b7ee8b45db9871dee8d89ef6211",
"id": 7,
"line_code": null,
"note": "Jenkins please retry a build",
"noteable_id": 1,
"noteable_type": "Issue",
"original_position": null,
"position": null,
"project_id": 1,
"resolved_at": null,
"resolved_by_id": null,
"resolved_by_push": null,
"st_diff": null,
"system": false,
"type": null,
"updated_at": "2024-10-24 15:34:50 UTC",
"updated_by_id": null,
"description": "Jenkins please retry a build",
"url": "http://localhost/root/test_project/-/issues/1#note_7",
"action": "create"
},
"repository": {
"name": "test_project",
"url": "ssh://git@localhost:55522/root/test_project.git",
"description": null,
"homepage": "http://localhost/root/test_project"
},
"issue": {
"author_id": 1,
"closed_at": null,
"confidential": false,
"created_at": "2024-10-24 15:26:23 UTC",
"description": "",
"discussion_locked": null,
"due_date": null,
"id": 1,
"iid": 1,
"last_edited_at": null,
"last_edited_by_id": null,
"milestone_id": null,
"moved_to_id": null,
"duplicated_to_id": null,
"project_id": 1,
"relative_position": 513,
"state_id": 1,
"time_estimate": 0,
"title": "bad issue",
"updated_at": "2024-10-24 15:34:50 UTC",
"updated_by_id": 1,
"type": "Issue",
"url": "http://localhost/root/test_project/-/issues/1",
"total_time_spent": 0,
"time_change": 0,
"human_total_time_spent": null,
"human_time_change": null,
"human_time_estimate": null,
"assignee_ids": [
1
],
"assignee_id": 1,
"labels": [
{
"id": 2,
"title": "bug",
"color": "#c21e56",
"project_id": 1,
"created_at": "2024-10-24 15:31:08 UTC",
"updated_at": "2024-10-24 15:31:08 UTC",
"template": false,
"description": null,
"type": "ProjectLabel",
"group_id": null
},
{
"id": 1,
"title": "documentation",
"color": "#6699cc",
"project_id": 1,
"created_at": "2024-10-24 15:15:11 UTC",
"updated_at": "2024-10-24 15:15:11 UTC",
"template": false,
"description": null,
"type": "ProjectLabel",
"group_id": null
}
],
"state": "opened",
"severity": "unknown",
"customer_relations_contacts": [ ]
}
}
### Are you interested in contributing a fix?
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.