[分享] GitLab 命令行工具 glab 推荐

GitLab CLI - glab

GLab 是一个开源的 GitLab CLI 工具。它将 GitLab 带到您的终端:在您已经使用 Git 和您的代码的地方旁边,无需在窗口和浏览器选项卡之间切换,即可完成操作请求。例如:创建issue,查看 issue board,创建 mr 等众多操作。

工具安装:GitLab CLI - `glab` | GitLab

本次主要介绍几个常用的功能:

  • glab api
    使用 api 进行测试或者写程序是经常需要的,经常被困扰的是之前申请的 token 很快可能就忘记记录在哪里了,或者根本没有记录,每次使用 api 都要重新申请一个 token。配置了 glab 后就不会有这个问题的困扰,直接调用命令即可调试 API,并且可以直接省略 API 的前缀以及避免分页。
    例如:查看所有项目:
    ```shell
    glab api --paginate “/projects” # --paginate 不进行分页
  • glab alias
    此命令类似 linux alias,可以定义操作的别名,更加方便命令的调用和展示。
    例如:
    as   auth status
    ci   pipeline ci
    co   mr checkout
    ils  issue list --all
    
  • glab ci
    glab ciglab pipeline ci 的别名,可以对流水线或者作业做如下操作,通过命令操作要比页面渲染切换快捷很多。
    artifact  -- 下载作业的 artifacts 文件到指定目录
    delete    -- 删除指定 id 的流水线记录
    get       -- 获取流水线的详细信息,有 text(粗略)和 JSON(最详细)两种显示方式
    lint      -- 检查本地的 .gitlab-ci.yml 文件语法是否正确
    list      -- 获取当前项目的所有流水线记录(包含流水线状态, id, 分支,执行时间)
    retry     -- 重试流水线作业(view命令可以查看到作业 id)
    run       -- 新运行一个流水线,可以指定分支和变量
    status    -- 查看指定分支最新的流水线状态(可以查看日志和重试)
    trace     -- 实时查看 job 日志
    view      -- 查看指定分支最新流水线的所有作业、状态和日志(可以中止、重试作业)
    
  • glab issue
    用来操作 issue,主要可以实现如下功能,但是遗憾的是,目前不能查看 issue comments/notes,只能添加。
    board        -- 查看创建 board,group board 需要指定项目的同时指定 --group
    close        -- 关闭 issue
    create       -- 创建 issue
    delete       -- 删除 issue
    list         -- 列出所有 issue
    note         -- 添加评论
    reopen       -- 重新打开 issue
    subscribe    -- 订阅 issue
    unsubscribe  -- 取消订阅 issue
    update       -- 更新 issue 属性
    view         -- 查看 issue (不包含评论),可以直达 web 页面
    
  • glab release
    大多情况下我们都是通过 gitlab 的 release 镜像的 release cli 去发布 release,但是通过 glab release 可以更加方便的发布 release,并且可以添加 assets,例如:
    ## 以 main 分支为基准创建 tag,然后添加外部 assets
    $ glab release create v1.0.1 -r main --assets-links='  
        [
          {
            "name": "Asset1",
            "url":"https://<domain>/some/location/1",
            "link_type": "other",
            "filepath": "path/to/file"
          }
        ]'
    # 或者
    $ glab release create v1.0.1 ./runner.json # 将本地文件附件到 release assets 
    
    使用此种方式要比使用流水线方便很多,同时还支持如下操作:
    $ glab release delete <release> --with-tag --yes # 非交互式删除,同时删除 tag
    $ glab release download v1.10.1 --asset-name="*.tar.gz" # 下载指定的 asset
    $ glab release list # 查看所有 release
    $ glab release upload v1.0.0 verify.tar.gz # 追加 asset 到 release assets
    $ glab release view v1.0.0 <-w> # 可以查看到所有链接的下载地址,-w 跳转到页面查看 
    
  • glab ssh-key
    很多时候添加 ssh keys 进行仓库克隆测试的时候,操作起来很繁琐,此时可以通过命令行更加快捷的添加。
    $ glab ssh-key add ~/.ssh/id_ed25519.pub -t "my title" # 添加 ssh keys
    $ glab ssh-key get # 查看某个 ssh-key 的完整公钥
    $ glab ssh-key list --show-id # 查看所有 ssh keys,压缩显示,显示的 id 可以在 get 命令中使用
    
  • 其他命令
    • glab snippet # 支持创建代码片段
    • glab label # 支持查看和创建标签
    • glab mr # 几乎支持所有页面的 mr 操作
    • glab repo # 支持归档、克隆、查看成员、创建、删除、fork、mirror、传输、查看等操作
    • glab variable # 支持创建、更新、删除、查看群组和项目级别的变量
    • glab user # 支持查看用户的事件