- Documentation
- Integrations
- Apps
- GitLab integration
GitLab integration
Create issues, open merge requests, run pipelines, and react to repository events across your clients' GitLab projects from any TaskJuice workflow.
What it does
The GitLab integration lets your agency drive every client's GitLab project from a single workflow. Connect a client's GitLab.com account once and TaskJuice can read projects, file and triage issues, open and merge merge requests, manage branches, tags, releases and CI variables, and react in real time when commits land, issues change state, pipelines finish, or access tokens approach expiry.
The GitLab app works with GitLab SaaS (gitlab.com). Self-managed GitLab installations are not supported.
Connect a GitLab account
- Register a GitLab OAuth application at
https://gitlab.com/-/user_settings/applications, with the redirect URI TaskJuice shows on the connection screen, and tick theapiscope. - Add the application's Application ID and Secret in TaskJuice under Settings, Integrations, OAuth clients.
- Open your workspace in TaskJuice and navigate to Connections.
- Choose GitLab and click Connect.
- Enter
gitlab.comas the host. - Sign in as the GitLab user whose projects you want to manage on behalf of your client and approve the
apiscope. GitLab exposes no narrower scope that still permits writes, soapiis the least privilege that covers the action surface.
To revoke access, the connected user opens https://gitlab.com/-/user_settings/applications, finds the TaskJuice authorization, and revokes it.
Triggers
TaskJuice registers a project webhook for you when you publish a workflow, and removes it when you unpublish. Pick the project on the trigger node and nothing needs configuring inside GitLab.
gitlab/push-eventtriggers when commits are pushed to a project branch or tag (Push Hook).gitlab/issue-eventtriggers when an issue is opened, updated, closed, or reopened (Issue Hook).gitlab/merge-request-eventtriggers when a merge request is opened, updated, approved, merged, or closed (Merge Request Hook).gitlab/tag-push-eventtriggers when a tag is pushed to or deleted from a project (Tag Push Hook).gitlab/note-eventtriggers when a comment is left on a commit, merge request, issue, or code snippet (Note Hook).gitlab/confidential-note-eventtriggers when a comment is left on a confidential issue (Note Hook withevent_type: confidential_note).gitlab/pipeline-eventtriggers when a pipeline's status changes (Pipeline Hook).gitlab/job-eventtriggers when the status of a CI job changes (Job Hook;object_kind: build).gitlab/wiki-page-eventtriggers when a wiki page is created, updated, or deleted (Wiki Page Hook).gitlab/deployment-eventtriggers when a deployment starts, succeeds, fails, or is canceled (Deployment Hook).gitlab/release-eventtriggers when a release is created or updated (Release Hook).gitlab/confidential-issue-eventtriggers when a confidential issue is opened, updated, closed, or reopened.gitlab/milestone-eventtriggers when a project milestone is created, closed, reopened, or deleted.gitlab/emoji-eventtriggers when an emoji reaction is added to or removed from an issue, merge request, comment, or snippet.gitlab/access-token-eventtriggers when a project access token is approaching its expiry date, so a workflow can rotate or alert on it before access breaks.
Two triggers poll instead of receiving a webhook:
gitlab/new-commitpolls a project's default branch each cycle for its most recent commits and emits one activation wrapping every commit not seen on a prior cycle initems.gitlab/new-todopolls the connected account's pending to-do list each cycle (review requests, mentions, assignments, failed builds) and emits one activation wrapping every to-do not seen on a prior cycle initems.gitlab/new-projectpolls the projects the connected account is a member of and emits one activation wrapping every project not seen on a prior cycle initems.
GitLab authenticates each delivery with the X-Gitlab-Token header, carrying a secret TaskJuice mints when it registers the webhook. Deliveries whose token does not match are rejected.
Confidential issues and confidential comments are delivered with the same body as their ordinary counterparts and are separated only by the X-Gitlab-Event header, so they have their own triggers. If you want both, add both.
Actions
Projects and groups
gitlab/get-current-userreturns the authenticated GitLab user.gitlab/list-projectslist projects the authenticated user can access.gitlab/get-projectfetch a single project by numeric ID or URL-encoded path (e.g.gitlab/list-user-projectslist the projects owned by a specific user.gitlab/list-groupslist the groups the connected account can see.gitlab/get-groupfetch a single group by id or URL-encoded full path.gitlab/create-groupcreate a new group.gitlab/list-project-memberslist a project's members, including members inherited from ancestor groups.gitlab/get-userlook up GitLab users by exact username or a search string over name, username, and public email.gitlab/searchsearch across the connected GitLab instance.
Issues
gitlab/create-issuecreate a new issue in a GitLab project.gitlab/list-issueslist issues in a project.gitlab/get-issuefetch a single issue by its project-scoped IID.gitlab/update-issueupdate an issue's title, description, labels, assignees, milestone, due date, confidentiality, or state (close/reopen).gitlab/delete-issuepermanently delete an issue.gitlab/comment-on-issueadd a comment (note) to an issue.gitlab/list-issue-noteslist the comments on an issue, newest first by default.gitlab/get-issue-notefetch a single comment on an issue by id.gitlab/update-issue-noteedit the body of an existing issue comment.gitlab/delete-issue-notepermanently delete a comment from an issue.gitlab/list-issue-closing-merge-requestslist the merge requests that will close an issue when merged.
Merge requests
gitlab/create-merge-requestopen a merge request from a source branch to a target branch in a project.gitlab/list-merge-requestslist merge requests in a project, filtered by state and branch.gitlab/get-merge-requestfetch a single merge request by its project-scoped IID.gitlab/update-merge-requestupdate a merge request's title, description, target branch, labels, assignees, reviewers, milestone, or state (close/reopen).gitlab/merge-merge-requestaccept and merge a merge request.gitlab/cancel-merge-when-pipeline-succeedscancel a merge request's queued auto-merge so it no longer merges when its pipeline succeeds.gitlab/delete-merge-requestpermanently delete a merge request.gitlab/comment-on-merge-requestadd a comment (note) to a merge request.gitlab/list-merge-request-noteslist the comments on a merge request.gitlab/get-merge-request-notefetch a single comment on a merge request by id.gitlab/update-merge-request-noteedit the body of an existing merge request comment.gitlab/delete-merge-request-notepermanently delete a comment from a merge request.gitlab/list-merge-request-commitslist the commits contained in a merge request.gitlab/list-merge-request-diffslist the file diffs in a merge request.gitlab/list-merge-request-closing-issueslist the issues a merge request will close when it is merged.
Repository
gitlab/create-branchcreate a new branch in a project's repository from an existing branch, tag, or commit SHA.gitlab/list-brancheslist a repository's branches, optionally filtered by a name search.gitlab/get-branchfetch a single branch and its head commit.gitlab/delete-branchdelete a branch from the repository.gitlab/create-commitcreate a commit on a branch with one or more file actions (create, update, delete, move, chmod).gitlab/list-commitslist repository commits, filtered by branch or date window.gitlab/get-commitfetch a single commit by SHA, branch, or tag name.gitlab/get-commit-difffetch the file diffs introduced by a single commit.gitlab/list-commit-commentslist the comments left on a commit.gitlab/create-commit-commentpost a comment on a commit, optionally anchored to a file and line.gitlab/get-filefetch a file from a project's repository at a given ref.gitlab/list-repository-treelist the files and directories at a path in the repository.gitlab/list-contributorslist repository contributors with their commit and line counts.gitlab/create-tagcreate a lightweight or annotated tag pointing at a commit, branch, or existing tag.gitlab/list-tagslist a repository's tags.gitlab/get-tagfetch a single repository tag by name.gitlab/delete-tagdelete a tag from a project's repository.
Releases, labels and milestones
gitlab/create-releasecreate a release from an existing tag, or create the tag from a ref at the same time.gitlab/list-releaseslist a project's releases, newest first.gitlab/get-releasefetch a single release by its tag name.gitlab/update-releasechange a release's name, description, or release date.gitlab/delete-releasedelete a release.gitlab/create-labelcreate a new label in a project with a name and color.gitlab/list-labelslist a project's labels, optionally filtered by a search keyword.gitlab/get-labelfetch a single project label by name or id.gitlab/update-labelrename a project label or change its color, description, or priority.gitlab/delete-labeldelete a project label.gitlab/create-milestonecreate a new milestone in a project with an optional date window.gitlab/list-milestoneslist a project's milestones, filtered by state.gitlab/get-milestonefetch a single project milestone by id.gitlab/update-milestonechange a milestone's title, description, dates, or open/closed state.gitlab/delete-milestonepermanently delete a project milestone.gitlab/list-milestone-issueslist the issues assigned to a milestone.
CI/CD
gitlab/create-pipelinetrigger a new CI/CD pipeline on a branch or tag, optionally with pipeline variables.gitlab/list-pipelineslist a project's pipelines, filtered by status or ref.gitlab/get-pipelinefetch a single pipeline by id.gitlab/cancel-pipelinecancel a running pipeline and its jobs.gitlab/retry-pipelineretry the failed and canceled jobs in a pipeline.gitlab/list-jobslist a project's CI jobs, filtered by scope.gitlab/get-jobfetch a single CI job by id.gitlab/cancel-jobcancel a running CI job.gitlab/retry-jobretry a failed or canceled CI job.gitlab/create-variablecreate a project-level CI/CD variable, optionally protected, masked, or scoped to an environment.gitlab/list-variableslist a project's CI/CD variables.gitlab/get-variablefetch a single CI/CD variable by key.gitlab/update-variablechange the value or flags of an existing CI/CD variable.gitlab/delete-variablepermanently delete a project CI/CD variable.gitlab/list-deploymentslist a project's deployments, filtered by environment or status.gitlab/get-deploymentfetch a single deployment by id.
Snippets
gitlab/create-snippetcreate a project code snippet from one or more files.gitlab/list-snippetslist a project's code snippets.gitlab/get-snippetfetch a single project snippet by id.gitlab/update-snippetchange a project snippet's title, description, or visibility.gitlab/delete-snippetpermanently delete a project snippet.gitlab/list-snippet-noteslist the comments on a project snippet.gitlab/create-snippet-notepost a comment on a project snippet.
To-dos
gitlab/list-todoslist the connected user's to-do items (review requests, mentions, assignments), filtered by state, action, or target type.gitlab/mark-todo-donemark a single to-do item on the connected user's list as done.gitlab/create-todo-on-issueadd a to-do item for the connected account on an issue.gitlab/mark-all-todos-donemark every pending to-do for the connected account as done.
Known limitations
- GitLab.com meters the REST API per user. When it returns a 429, TaskJuice surfaces a retryable rate-limit error and respects the reset window the response advertises.
- Running or retrying CI requires an identity-verified GitLab.com account. On an unverified account, Run Pipeline and Retry Pipeline fail with "Identity verification is required in order to run CI jobs", and no jobs exist for the job actions or the Job Event trigger to read.
- Actions, resource pickers, managed webhooks and the two polling triggers all call
gitlab.com. Self-managed GitLab is not supported. - In List Projects, Order by offers only Id and Created at. Ordering by name, path, updated or last activity alongside Membership only exceeds GitLab's own query timeout and fails upstream. Sort on any other field in a later step instead.
- Group-level webhooks are a GitLab Premium feature and are not covered. Triggers register against a single project.