Introduction
# GitLab Skill
Use the `glab` CLI to interact with GitLab. Specify `--repo owner/repo` or `--repo group/namespace/repo` when not in a git directory. Also accepts full URLs.
## Merge Requests
List open merge requests:
```bash glab mr list --repo owner/repo ```
View MR details:
```bash glab mr view 55 --repo owner/repo ```
Create an MR from current branch:
```bash glab mr create --fill --target-branch main ```
Approve, merge, or check out:
```bash glab mr approve 55 glab mr merge 55 glab mr checkout 55 ```
View MR diff:
```bash glab mr diff 55 ```
## CI/CD Pipelines
Check pipeline status for current branch:
```bash glab ci status ```
View pipeline interactively (navigate jobs, view logs):
```bash glab ci view ```
List recent pipelines:
```bash glab ci list --repo owner/repo ```
Trace job logs in real time:
```bash glab ci trace glab ci trace 224356863 # specific job ID glab ci trace lint # by job name ```
Retry a failed pipeline:
```bash glab ci retry ```
Validate `.gitlab-ci.yml`:
```bash glab ci lint ```
## Issues
List and view issues:
```bash glab issue list --repo owner/repo glab issue view 42 ```
Create an issue:
```bash glab issue create --title "Bug report" --label bug ```
Add a comment:
```bash glab issue note 42 -m "This is fixed in !55" ```
## API for Advanced Queries
Use `glab api` for endpoints not covered by subcommands. Supports REST and GraphQL.
Get project releases:
```bash glab api projects/:fullpath/releases ```
Get MR with specific fields (pipe to jq):
```bash glab api projects/owner/repo/merge_requests/55 | jq '.title, .state, .author.username' ```
Paginate through all issues:
```bash glab api issues --paginate ```
GraphQL query:
```bash glab api graphql -f query=' query { currentUser { username } } ' ```
## JSON Output
Pipe to `jq` for filtering:
```bash glab mr list --repo owner/repo | jq -r '.[] | "\(.iid): \(.title)"' ```
## Variables and Releases
Manage CI/CD variables:
```bash glab variable list glab variable set MY_VAR "value" glab variable get MY_VAR ```
Create a release:
```bash glab release create v1.0.0 --notes "Release notes here" ```
## Key Differences from GitHub CLI
| Concept | GitHub (`gh`) | GitLab (`glab`) | | ------------------------- | ------------- | -------------------------------------- | | Pull/Merge Request | `gh pr` | `glab mr` | | CI runs | `gh run` | `glab ci` | | Repo path format | `owner/repo` | `owner/repo` or `group/namespace/repo` | | Interactive pipeline view | N/A | `glab ci view` |