jenkinsci / jenkinsci/gitlab-plugin

Reporting Status from Matrix Job returning 403 Forbidden

Open
#922 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
1.4k
Forks
615
Avg merge
4h 32m
Merged PRs (30d)
10

Description

This may be a dup of #883. I can't tell.

## Issue

### Context
- **Gitlab plugin version**: 1.5.12
- **Gitlab version**: 11.3.5-ee 7b10203
- **Jenkins version**: 2.170
- **Job type**: Matrix

### Logs & Traces

```
Apr 25, 2019 10:21:37 AM INFO com.dabsquared.gitlabjenkins.util.CommitStatusUpdater updateCommitStatus
Updating build '5079' to 'canceled'
Apr 25, 2019 10:21:37 AM FINEST com.dabsquared.gitlabjenkins.gitlab.api.impl.ResteasyGitLabClientBuilder
Call GitLab:
HTTP method: POST
URL: https://myurl/api/v4/projects/5079/statuses/ac1df97af7c42e6ef3ae84934b2a141b18971356
Request headers: [
Accept = [application/json],
Content-Type = [application/x-www-form-urlencoded],
PRIVATE-TOKEN = [****FILTERED****]
]
Apr 25, 2019 10:21:37 AM FINEST com.dabsquared.gitlabjenkins.gitlab.api.impl.ResteasyGitLabClientBuilder
Got response from GitLab:
URL: https://myurl/api/v4/projects/5079/statuses/ac1df97af7c42e6ef3ae84934b2a141b18971356
Status: 403 Forbidden
Response headers: [
Cache-Control = [no-cache],
Connection = [keep-alive],
Content-Length = [27],
Content-Type = [application/json],
Date = [Thu, 25 Apr 2019 15:21:37 GMT],
Server = [nginx],
Vary = [Origin],
X-Content-Type-Options = [nosniff],
X-Frame-Options = [SAMEORIGIN],
X-Request-Id = [3eb84427-410c-4f4b-a2bb-f342c4fd78c2],
X-Runtime = [0.033645]
]
Response body: {
"message" : "403 Forbidden"
}
Apr 25, 2019 10:21:37 AM SEVERE com.dabsquared.gitlabjenkins.util.CommitStatusUpdater updateCommitStatus
Failed to update Gitlab commit status for project '5079'
javax.ws.rs.ClientErrorException: HTTP 403 Forbidden
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.handleErrorStatus(ClientInvocation.java:216)
at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.DefaultEntityExtractorFactory$3.extractEntity(DefaultEntityExtractorFactory.java:50)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:104)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:64)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.$Proxy109.changeBuildStatus(Unknown Source)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.ResteasyGitLabClient.changeBuildStatus(ResteasyGitLabClient.java:60)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient$7.execute(AutodetectingGitLabClient.java:112)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient$7.execute(AutodetectingGitLabClient.java:109)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient$GitLabOperation.execute(AutodetectingGitLabClient.java:335)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient$GitLabOperation.access$100(AutodetectingGitLabClient.java:332)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient.execute(AutodetectingGitLabClient.java:328)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient.changeBuildStatus(AutodetectingGitLabClient.java:108)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient$7.execute(AutodetectingGitLabClient.java:112)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient$7.execute(AutodetectingGitLabClient.java:109)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient$GitLabOperation.execute(AutodetectingGitLabClient.java:335)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient$GitLabOperation.access$100(AutodetectingGitLabClient.java:332)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient.execute(AutodetectingGitLabClient.java:328)
at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient.changeBuildStatus(AutodetectingGitLabClient.java:108)
at com.dabsquared.gitlabjenkins.util.CommitStatusUpdater.updateCommitStatus(CommitStatusUpdater.java:85)
at com.dabsquared.gitlabjenkins.util.CommitStatusUpdater.updateCommitStatus(CommitStatusUpdater.java:97)
at com.dabsquared.gitlabjenkins.publisher.GitLabCommitStatusPublisher.perform(GitLabCommitStatusPublisher.java:55)
at com.dabsquared.gitlabjenkins.publisher.GitLabCommitStatusPublisher$1.endBuild(GitLabCommitStatusPublisher.java:81)
at hudson.matrix.MatrixBuild$MatrixBuildExecution.post2(MatrixBuild.java:433)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635)
at hudson.model.Run.execute(Run.java:1841)
at hudson.matrix.MatrixBuild.run(MatrixBuild.java:323)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
```

### Problem description

I'm trying to have my matrix job update the build status on the merge request via the "Publish build status to GitLab" setting, but when my job attempts to do so, I'm getting "403 Forbidden" errors. While I've been trying to move our jobs over to pipelines, I haven't been able to do it in a way that works for us yet (our matrices are pretty huge), so we're stuck with the old matrix-style jobs.

I've set up a GitLab connection per the instructions in the README and in fact, Jenkins is able to post comments on the MR via the "Add note with build status on GitLab merge requests" post build action.

The API token is attached to a user with Maintainer permissions on the repository so there doesn't seem to be a reason why it shouldn't be able to post a build status. Interestingly, if I use an API token attached specifically to the user who created the MR, things work fine. Obviously, that's not feasible since we don't funnel all of our development efforts through one person...

I get similar logs as above for attempting to set the "Pending" status.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.