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

以编程方式获取GitlabCI作业的结果,gitlab,gitlab-ci,Gitlab,Gitlab Ci,我正在尝试创建一个脚本,该脚本接受CI作业的结果,如果成功,将在该存储库上启动一些其他测试 问题是gitlab api不支持获取作业的输出。更不用说成功/失败标志了。 我尝试使用webdriver获取包含结果的的内容。但是,指向作业的URL并不是以可预测的方式递增的。这取决于总的作业数量以及该作业在队列中的位置。下面是这样一个工作url的示例 http://///-/jobs/25 25是总体工作id 另一个想法是让webdriver在UI中单击,直到我们到达指定的作业,但是这似乎效率低下 以前

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

问题是gitlab api不支持获取作业的输出。更不用说成功/失败标志了。 我尝试使用webdriver获取包含结果的
的内容。但是,指向作业的URL并不是以可预测的方式递增的。这取决于总的作业数量以及该作业在队列中的位置。下面是这样一个工作url的示例

http://///-/jobs/25

25是总体工作id

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

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

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

问题在于您的体系结构。如果您需要“在管道成功时做一些事情”-只需将其添加为另一项工作即可。如果前一个失败,它将永远不会运行

您可以使用访问以前作业的结果,例如:

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

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

获取/项目

得到


获取

问题在于您的体系结构。如果您需要“在管道成功时做一些事情”-只需将其添加为另一项工作即可。如果前一个失败,它将永远不会运行

您可以使用访问以前作业的结果,例如:

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

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

获取/项目

得到


好主意,如果没有其他办法,我会这么做,但是,我对ci作业没有任何控制权。我需要麻烦人们将我的脚本添加到他们的管道中,这是不灵活的,我们希望避免这样做。这是一个好主意,如果没有其他办法,我会这样做,但是,我对ci作业没有任何控制权。我需要麻烦人们将我的脚本添加到他们的管道中,这是不灵活的,我们希望避免它我看到你的编辑。但这并不清楚:1。你怎么知道工作id(每次都增加)2。如果您想在另一个repo中测试代码,只需克隆它,testI不能只克隆它并进行测试,因为理想情况下,我需要为2k repo执行此操作。手动操作需要很长时间。我需要知道哪些repos最近成功构建了,所以我只能过滤掉那些同时处于活动状态和构建状态的repos。你仍然需要数千个项目ID。有吗?如何组合
GET/projects
GET/projects/:id/管道?status=success
GET/projects/:id/jobs?scope[]=success
从您提到的GET/projects中我得到了项目,没有想到第二部分。谢谢,伙计,你能把它加到你的问题里吗?这样我就可以接受了。不客气!更新。我看到你的编辑。但这并不清楚:1。你怎么知道工作id(每次都增加)2。如果您想在另一个repo中测试代码,只需克隆它,testI不能只克隆它并进行测试,因为理想情况下,我需要为2k repo执行此操作。手动操作需要很长时间。我需要知道哪些repos最近成功构建了,所以我只能过滤掉那些同时处于活动状态和构建状态的repos。你仍然需要数千个项目ID。有吗?如何组合
GET/projects
GET/projects/:id/管道?status=success
GET/projects/:id/jobs?scope[]=success
从您提到的GET/projects中我得到了项目,没有想到第二部分。谢谢,伙计,你能把它加到你的问题里吗?这样我就可以接受了。不客气!更新。