以编程方式获取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作业的结果的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将按钮添加到片段

如何使用新 API 以编程方式获取 Hadoop 集群中所有正在运行的作业?

Android以编程方式获取可见布局的高度

如何以编程方式获取 Spark UI 信息

Gitlab CI:作业挂起克隆回购

html 将以编程方式附加外部脚本文件的javascript代码片段,并按顺序排列。用于响应式网站,其中ma