介绍
# GitLab Skill
使用 `glab` CLI 与 GitLab 进行交互。当不在 git 目录中时,请指定 `--repo owner/repo` 或 `--repo group/namespace/repo`。同时也接受完整的 URL。
## 合并请求
列出开放的合并请求:
```bash glab mr list --repo owner/repo ```
查看 MR 详情:
```bash glab mr view 55 --repo owner/repo ```
从当前分支创建 MR:
```bash glab mr create --fill --target-branch main ```
批准、合并或检出:
```bash glab mr approve 55 glab mr merge 55 glab mr checkout 55 ```
查看 MR 差异:
```bash glab mr diff 55 ```
## CI/CD 流水线
检查当前分支的流水线状态:
```bash glab ci status ```
以交互方式查看流水线(浏览作业、查看日志):
```bash glab ci view ```
列出最近的流水线:
```bash glab ci list --repo owner/repo ```
实时追踪作业日志:
```bash glab ci trace glab ci trace 224356863 # specific job ID glab ci trace lint # by job name ```
重试失败的流水线:
```bash glab ci retry ```
验证 `.gitlab-ci.yml`:
```bash glab ci lint ```
## 议题
列出和查看议题:
```bash glab issue list --repo owner/repo glab issue view 42 ```
创建议题:
```bash glab issue create --title "Bug report" --label bug ```
添加评论:
```bash glab issue note 42 -m "This is fixed in !55" ```
## 高级查询 API
使用 `glab api` 调用子命令未覆盖的端点。支持 REST 和 GraphQL。
获取项目发布:
```bash glab api projects/:fullpath/releases ```
获取包含特定字段的 MR(通过管道传递给 jq):
```bash glab api projects/owner/repo/merge_requests/55 | jq '.title, .state, .author.username' ```
分页浏览所有议题:
```bash glab api issues --paginate ```
GraphQL 查询:
```bash glab api graphql -f query=' query { currentUser { username } } ' ```
## JSON 输出
通过管道传递给 `jq` 进行过滤:
```bash glab mr list --repo owner/repo | jq -r '.[] | "\(.iid): \(.title)"' ```
## 变量和发布
管理 CI/CD 变量:
```bash glab variable list glab variable set MY_VAR "value" glab variable get MY_VAR ```
创建发布:
```bash glab release create v1.0.0 --notes "Release notes here" ```
## 与 GitHub CLI 的主要区别
| 概念 | GitHub (`gh`) | GitLab (`glab`) | | ------------------------- | ------------- | -------------------------------------- | | Pull/Merge Request | `gh pr` | `glab mr` | | CI runs | `gh run` | `glab ci` | | 仓库路径格式 | `owner/repo` | `owner/repo` 或 `group/namespace/repo` | | 交互式流水线查看 | N/A | `glab ci view` |