以编程方式获取GitlabCI作业的结果

时间:2018-03-03 14:33:38

标签: gitlab gitlab-ci

我正在尝试创建一个获取CI作业结果的脚本,如果成功,则在该存储库上启动其他一些测试。

问题是gitlab api不支持获取Job的输出。更不用说成功/失败的旗帜。 我尝试使用webdriver来获取包含结果的<div>的内容。但是,导致这些工作的网址并不是以可预测的方式增量的。这取决于总体上存在多少个作业以及该作业在队列中的位置。以下是这样一个工作网址的示例

http://<glab_url>/<user>/<project>/-/jobs/25

25是整体职位ID

另一个想法是让webdriver点击UI直到我们到达指定的工作,但这似乎效率低下。

以前有人遇到过这个问题吗?如果是这样,你是如何解决的?

//编辑:在@ vladkras的有用答案后提供一些上下文。 //我们有多个开发团队,鼓励开发人员创建自己的项目。我无法控制谁在CI中运行什么。我只是想在安装成功的repos中添加一些基本的安全检查,已知的坏模式和秘密。这些检查应该立即报告给我/我的团队,如果项目成功,我们将讨论如何困扰开发人员集成它。

1 个答案:

答案 0 :(得分:2)

问题在于你的架构。如果您需要“在管道成功时执行某些操作” - 只需将其添加为一个更多的工作。如果前一个失败,它将永远不会运行。

您可以使用dependencies访问上一个作业的结果,例如:

job1:
  artifacts:
    paths:
     - test
  script:
   - echo "result" > test/file
job2:
  dependencies:
    job1
  script:
   - cat test/file

修改

API解决方案如何获取所有CI管道和成功的作业:

GET / projects

获取/projects/:id/pipelines?status=success

获取/projects/:id/jobs?scope[]=success