GitLab integration
In short
Read projects and pipelines, and work with issues and merge requests. Connect it on the Integrations page; your app then calls GitLab through Sapilon without ever holding a GitLab credential.
Lets your app list projects and pipelines, browse a repository tree, and open, update and comment on issues and merge requests on gitlab.com, with a personal, group or project access token.
Connecting
On the Integrations page choose Connect on GitLab and fill in:
- Access token — GitLab → Edit profile → Access tokens (or a group or project → Settings → Access tokens) → Add new token with the api scope.
Sapilon checks the key with the provider before it saves it, and stores it encrypted; it is never shown again.
- Only gitlab.com is supported; self-managed GitLab is not.
What your app can do
Only these requests are available; anything else is refused.
GET /userGET /projectsGET /projects/*GET|POST /projects/*/issuesGET|PUT /projects/*/issues/*GET|POST /projects/*/issues/*/notesGET|POST /projects/*/merge_requestsGET|PUT /projects/*/merge_requests/*GET /projects/*/pipelinesGET /projects/*/repository/tree
How the agent uses it
Use integrations.request('gitlab', …); paths are relative to https://gitlab.com/api/v4. Use a project’s numeric id in paths (a group/project path would need an encoded /, which is refused).
GET /user— the token’s account.GET /projects— Example:{ method: 'GET', path: '/projects', query: { membership: 'true', per_page: '50' } }.GET /projects/{id}— one project.GET|POST /projects/{id}/issues,GET|PUT /projects/{id}/issues/{iid}— Example:{ method: 'POST', path: '/projects/123/issues', body: { title: 'Login fails', labels: 'bug' } }; close withbody: { state_event: 'close' }.GET|POST /projects/{id}/issues/{iid}/notes— comments. Example:{ method: 'POST', path: '/projects/123/issues/7/notes', body: { body: 'Fixed' } }.GET|POST /projects/{id}/merge_requests,GET|PUT /projects/{id}/merge_requests/{iid}— list, open, read or update merge requests.GET /projects/{id}/pipelines— Example:{ method: 'GET', path: '/projects/123/pipelines', query: { ref: 'main' } }.GET /projects/{id}/repository/tree— Example:{ method: 'GET', path: '/projects/123/repository/tree', query: { path: 'docs' } }.
Deleting is not allowed.
More from GitLab: https://docs.gitlab.com/api/rest/