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

问题描述 投票:0回答:1

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

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

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

25是整体工作ID

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

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

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

gitlab gitlab-ci
1个回答
2
投票

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

并且您可以使用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

© www.soinside.com 2019 - 2024. All rights reserved.