以编程方式获取GitlabCI作业的结果
我正在尝试创建一个脚本,该脚本接受CI作业的结果,如果成功,将在该存储库上启动一些其他测试 问题是gitlab api不支持获取作业的输出。更不用说成功/失败标志了。 我尝试使用webdriver获取包含结果的以编程方式获取GitlabCI作业的结果,gitlab,gitlab-ci,Gitlab,Gitlab Ci,我正在尝试创建一个脚本,该脚本接受CI作业的结果,如果成功,将在该存储库上启动一些其他测试 问题是gitlab api不支持获取作业的输出。更不用说成功/失败标志了。 我尝试使用webdriver获取包含结果的的内容。但是,指向作业的URL并不是以可预测的方式递增的。这取决于总的作业数量以及该作业在队列中的位置。下面是这样一个工作url的示例 http://///-/jobs/25 25是总体工作id 另一个想法是让webdriver在UI中单击,直到我们到达指定的作业,但是这似乎效率低下 以前
的内容。但是,指向作业的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中我得到了项目,没有想到第二部分。谢谢,伙计,你能把它加到你的问题里吗?这样我就可以接受了。不客气!更新。