如何在本地执行git push后直接查看Gitlab CI/CD流水线运行情况
本地查看私有GitLab流水线运行输出的解决方案
完全可以实现,以下是两种可直接落地的方案:
方案1:使用GitLab官方CLI工具 glab(推荐,配置成本低)
这是最省事的方案,官方工具原生支持私有GitLab实例对接,常用CI操作都可以直接在终端完成:
- 第一步:安装
glab,根据你的本地操作系统选择对应安装方式即可,主流包管理器均已收录该工具。 - 第二步:完成私有GitLab实例认证
终端执行glab auth login,按照提示依次输入:- 你司部署的GitLab服务域名
- 认证方式选择
Token - 登录你司GitLab网页端,进入「个人设置-访问令牌」页面,生成一个带有
api、read_repository、read_ci权限的个人访问令牌,粘贴到终端即可完成认证。
注意生成个人访问令牌时不要额外开放不必要的权限,用完及时更新令牌保障账号安全
- 第三步:查看流水线输出
本地执行git push完成后,直接在项目目录下执行glab ci view,就能直接看到当前分支最新一次流水线的全量运行状态、每个Job的执行日志,和网页端展示的内容完全一致。如果要实时追踪某个运行中Job的输出,执行glab ci trace [Job名称/JobID]即可。
如果想要完全自动化,可以在项目的Gitpost-push钩子中配置自动执行上述命令,push完成后就会自动拉起日志展示,不需要手动输入命令。
方案2:自定义脚本调用GitLab OpenAPI(适合有定制需求的场景)
如果需要和公司内部其他工具打通,或者有特殊的日志过滤需求,可以自己写脚本实现:
- 第一步:和上述方案一样,先申请有权限的GitLab个人访问令牌。
- 第二步:编写对应脚本,核心逻辑如下:
git push完成后,先获取当前分支最新的commit hash值- 调用GitLab API
GET /projects/:项目ID/pipelines?sha=刚才拿到的commit hash,获取对应commit绑定的流水线ID - 再调用API
GET /projects/:项目ID/jobs?pipeline_id=流水线ID,拿到该流水线的所有Job信息 - 最后调用API
GET /projects/:项目ID/jobs/:JobID/trace拉取对应Job的日志,打印到终端即可。
两种方案配置一次后永久生效,不需要每次推送都登录网页端操作,除了查看日志外,还支持重启失败Job、取消运行中流水线等常用操作,基本可以覆盖网页端CI/CD模块的所有常用功能。
内容的提问来源于stack exchange,提问作者Rodskin
相关产品推荐
相关产品推荐

