如何从 GitLab CI 获取构建状态?

Posted

技术标签:

【中文标题】如何从 GitLab CI 获取构建状态?【英文标题】:How to get build status from GitLab CI? 【发布时间】:2013-02-26 19:49:50 【问题描述】:

我想从GitLab CI 添加上限部署场景检查构建状态。

有可能吗?

GitLab CI 是否有一些 API 可以通过提交 SHA 来获取构建/管道状态?

【问题讨论】:

我在他们的构建徽章 URL 上没有找到任何好的文档。如果有人有链接,请发布。 【参考方案1】:

GitLab CI基于Travis,提供build status url,甚至构建状态图:

https://travis-ci.org/[YOUR_GITHUB_USERNAME]/[YOUR_PROJECT_NAME].png
# or, limited to some branches
https://travis-ci.org/[YOUR_GITHUB_USERNAME]/[YOUR_PROJECT_NAME].png?branch=master,staging,production

Joran Beasley 提到网址:

http://gitlabci.example.com/projects/2/status.png?ref=master

【讨论】:

他们的文档在这方面非常糟糕。上面 Joran 的 URL 确实有效。 @aglassman 好点。我已将 Joran 的评论包含在答案中以获得更多可见性。【参考方案2】:

我找到了这样的链接http://some.domain/projects/:ID/builds/:SHA/status。 问题解决了

【讨论】:

与版本 GitLab CI 5.3.0 c28a8ea,url 已更改为http://some.domain/projects/:ID/commits/:SHA/status.json【参考方案3】:

现在您可以从此网址获取徽章:

https://gitlab.com/[namespace]/[project]/badges/[branch]/pipeline.svg

【讨论】:

【参考方案4】:

你可以在Pipelines settings页面找到构建徽章信息,即

https://<your-gitlab-installation-domain>/<group-name>/<repository-name>/settings/ci_cd

对于特定的存储库:

    转到设置 > CI/CD 展开常规管道设置部分 向下滚动到管道状态和/或覆盖报告 选择您的分支 复制您需要的任何内容(可能是 Markdown)

参考见:

https://docs.gitlab.com/ee/ci/pipelines.html#badges https://docs.gitlab.com/ee/user/project/pipelines/settings.html

【讨论】:

【参考方案5】:

API

从 GitLab 8.1 开始,有了新的提交状态 API。

GitLab CI Commits APIv4:

List the statuses of a commit

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/17/repository/commits/18f3e63d05582537db6d183d9d557be09e1f90c8/statuses

附: GitLabs 令牌在 Personal Access Tokens 页面 (https://gitlab.example.com/profile/personal_access_tokens) 中进行管理

glablab

有两个很棒的工具可以使用GitLab

zaquestion/lab: Lab wraps Git or Hub, making it simple to clone, fork, and interact with repositories on GitLab profclems/glab: An open-source GitLab command line tool bringing GitLab's cool features to your command line

glab 和 lab 都是开源工具,其目标相同是将 GitLab 引入命令行并简化开发人员工作流程。在很多方面lab 是hub,glab 是gh。

lab 旨在让git 用户感到熟悉,并利用git 来支持它的许多命令。 glabgh 用户来说会感觉更熟悉,并且因此更具交互性并且可能对初学者更友好。

lab ci status

对于带有lab 的 CI 管道的文本表示,您可能需要:

lab ci status [branch] [flags]

示例

lab ci status
lab ci status upstream 608 --merge-request
lab ci status 600 --wait
lab ci status upstream 125 --merge-request --bridge 'security-tests'

glab pipeline status

对于带有glab 的 CI 管道的文本表示,您可能需要:

glab pipeline status \[flags\]

示例

$ glab pipeline status --live
$ glab pipeline status --branch=master   // Get pipeline for master branch
$ glab pipe status   // Get pipeline for current branch

【讨论】:

以上是关于如何从 GitLab CI 获取构建状态?的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab CI :- 在 gitlab 上推送后获取待处理状态

如何从 .net 项目文件中获取 gitlab-ci.yml 文件中的项目版本?

如何在 .gitlab-ci.yml 中指定通配符工件子目录?

如何使用GitLab和Rancher构建CI/CD流水线–Part 1

如何使用 gitlab-ci.yml 在 gitlab 中更新 JSON 文件的内容?

如何从 GitLab CI 管道的工作发送电子邮件?