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



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

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

如何在作业运行时获取日志,并在后期构建中将其作为工件上传?

要获取作业的服务容器日志,请在.gitlab-ci.yml 中使用它,如下所示

sample_job:
script:
- kubectl logs ${HOSTNAME} -n ${RUNNER_NAMESPACE} -c svc-0 > svc0.log

${HOSTNAME}是一个gitlab环境变量,它为运行作业的pod提供名称。${RUNNER_NAMESPACE}是在k8s 中部署gitlab运行程序的命名空间

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

最新更新