如何收集GitLab流水线中所有作业的日志?

13

我有一些GitLab CI流水线,其中包括数十个作业 - 有时我需要查找可能出现在某个作业中的某些内容,但不知道具体是哪个作业。我可以在Web界面中手动选择每个作业并查看相关日志,但对于每个作业这样做是不可行的。

是否有某种方法(理想情况下,作为非特权GitLab用户)可以检索/汇总给定流水线的所有作业的输出?

如果有影响的话,我正在使用12.5.X-ee版本。

2个回答

11

你可以使用GitLab Jobs API来聚合所有作业的跟踪情况,并编写脚本,内容如下:

  • 向你的流水线添加一个最终阶段(聚合作业日志
  • 列出当前Pipeline ID jobs
  • 循环遍历JOB_IDs(除了聚合作业日志作业),并获取它们的作业日志
  • 转储到一个文件中,您可以在一个文件中查看所有日志
请注意,您需要创建一个个人访问令牌,然后在CI任务中使用它来访问API。没有很好的方法将访问令牌存储为除自定义环境变量之外的格式,然后在.gitlab-ci.yml中访问该变量。
希望对您有所帮助。

1
这个实现了Rekovni的建议的要点:download_ci_logs.rb。它为下载的跟踪文件添加了硬编码的CI-前缀和.log扩展名,还有一个我个人觉得有用的标题。
欢迎在这里留下改进建议或在该项目中提出问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接