以编程方式获取GitlabCI作业的结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以编程方式获取GitlabCI作业的结果相关的知识,希望对你有一定的参考价值。
我正在尝试创建一个脚本,该脚本获取CI作业的结果,如果成功,则在该存储库上启动其他一些测试。
问题是gitlab api不支持获取Job的输出。更不用说成功/失败的旗帜。我尝试使用webdriver来获取包含结果的<div>
的内容。但是,导致这些工作的网址并不是以可预测的方式增量的。这取决于总体上存在多少个作业以及该作业在队列中的位置。以下是这样一个工作网址的示例
http://<glab_url>/<user>/<project>/-/jobs/25
25是整体工作ID
另一个想法是让webdriver点击UI直到我们到达指定的作业,但这似乎效率低下。
以前有人遇到过这个问题吗?如果是这样,你是如何解决的?
//编辑:在@ vladkras的有用答案之后提供一些上下文。 //我们有多个开发团队,鼓励开发人员创建自己的项目。我无法控制谁在CI中运行什么。我只是想在安装成功的repos中添加一些基本的安全检查,已知的坏模式和秘密。这些检查应该立即报告给我/我的团队,如果项目成功,那么我们将讨论如何困扰开发人员集成它。
问题出在您的架构中。如果您需要“在管道成功时执行某些操作” - 只需将其添加为一个更多的工作。如果前一个失败,它将永远不会运行。
并且您可以使用dependencies来访问上一个作业的结果,例如:
job1:
artifacts:
paths:
- test
script:
- echo "result" > test/file
job2:
dependencies:
job1
script:
- cat test/file
编辑
API解决方案如何获取所有CI管道和成功的作业:
GET /项目
GET /projects/:id/pipelines?status=success
GET /projects/:id/jobs?scope[]=success
以上是关于以编程方式获取GitlabCI作业的结果的主要内容,如果未能解决你的问题,请参考以下文章