如何获取服务容器日志并将它们作为工件上传到 gitlab

how to get service container logs and upload them as artifacts in gitlab

背景: 我使用 v13.11.4 的 gitlab-ee,并且还在 k8s 集群中配置和部署了 gitlab runners(包括 helper 和 builder)。
问题: 当在 gitlab 中为项目触发管道时,作业会选择一个运行器并完成作业,而作业是 运行 我想捕获这些日志并将它们作为工件上传,以便开发人员可以下载它们?
我确实有 kubernetes 命令的想法来获取容器的日志但无法解决上述问题

kubectl logs -c svc-0  -n ${RUNNER_NAMESPACE} $(hostname) > svc0.log
kubectl logs -c svc-1  -n ${RUNNER_NAMESPACE} $(hostname) > svc1.log

如何在作业 运行 时获取日志并将它们作为工件上传到 post-build 中?

要获取作业的服务容器日志,然后在 .gitlab-ci.yml

中使用它,如下所示
sample_job:
  script:
    - kubectl logs ${HOSTNAME} -n ${RUNNER_NAMESPACE} -c svc-0 > svc0.log

${HOSTNAME} 是一个 gitlab 环境变量,它给出了 pod 的名称,其中作业是 运行。 ${RUNNER_NAMESPACE} 是你的 gitlab 运行器部署在 k8s

中的命名空间

注意:如果您认为可能有多个容器,那么可以为作业的运行器 pod(${HOSTNAME}) 中的所有 svc-* 容器使用 for 循环 运行。