我有一个测试过程,它生成一个文件作为输出。
我想在构建期间启动此测试过程,将其运行完成,然后收集它生成的文件并将其复制回构建上下文。
在Kubernetes / Helm中执行此操作的正确方法是什么?
构建过程可以访问kubectl
和helm
CLI工具。
我要求不使用kubectl exec
,因为群集设置不允许它。
一些细节:
我能够使用Pod
配置一次性流程。
我设置了将输出文件存储在卷装入中的过程,该装载挂载到emptyDir
卷。
我无法弄清楚如何获取输出文件。
我尝试了kubectl cp
,但我无法让它工作(没有这样的文件或目录)。
我无法弄清楚如何检查已停止的容器的内容。
我无法弄清楚如何查看音量中的内容。
kubectl logs
表示测试过程成功运行。该文件在容器中生成并存储在预期的位置。
快速更新:
在我的本地minikube环境中,我能够设置持久卷并将输出文件复制回主机文件系统。我将在Jenkins环境中尝试下一步。
以下是我本地(boot2docker)环境中kubectl cp
的输出:
$ kubectl cp my-pod:/home/node/output . -c mycontainer
error: home/node/output no such file or directory
/home/node/output
是容器中的volumeMount路径。
答案 0 :(得分:1)
我要求不使用kubectl exec,因为群集设置不允许它。
如果没有kubectl exec
命令,我可以建议这样做:
此外,许多构建系统都有Artifacts存储,它可以是存储测试结果的最佳选择。