Jenkins 如何从Kubernetes中的一次性进程中获取文件?
我有一个测试过程,它生成一个文件作为输出 我想在构建过程中启动这个测试过程,运行它直到完成,然后收集它生成的文件并将其复制回构建上下文 在Kubernetes/Helm中,正确的方法是什么 构建过程可以访问Jenkins 如何从Kubernetes中的一次性进程中获取文件?,jenkins,kubernetes,jenkins-pipeline,kubernetes-helm,jenkins-declarative-pipeline,Jenkins,Kubernetes,Jenkins Pipeline,Kubernetes Helm,Jenkins Declarative Pipeline,我有一个测试过程,它生成一个文件作为输出 我想在构建过程中启动这个测试过程,运行它直到完成,然后收集它生成的文件并将其复制回构建上下文 在Kubernetes/Helm中,正确的方法是什么 构建过程可以访问kubectl和helmCLI工具 我要求不要使用kubectl exec,因为集群设置不允许使用它 一些细节: 我能够使用Pod配置一次性流程 我设置了将输出文件存储在卷装载中的过程,该卷装载到emptyDir卷 我不知道如何获取输出文件 我尝试了kubectl cp,但无法让它工作(没有这
kubectl
和helm
CLI工具
我要求不要使用kubectl exec
,因为集群设置不允许使用它
一些细节:
我能够使用Pod
配置一次性流程
我设置了将输出文件存储在卷装载中的过程,该卷装载到emptyDir
卷
我不知道如何获取输出文件
我尝试了kubectl cp
,但无法让它工作(没有这样的文件或目录)
我不知道如何检查一个停下来的容器里的东西
我想不出怎么看这卷里有什么
kubectl日志
显示测试过程成功运行。该文件在容器中生成并存储在预期位置
快速更新:
在本地minikube环境中,我能够设置一个持久卷并将输出文件复制回主机文件系统。下一步我将在詹金斯环境中尝试
以下是我的本地(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路径
我要求不要使用kubectl exec,因为集群设置不允许使用它
如果没有kubectl exec
命令,我可以建议这样做:
此外,许多构建系统都有工件存储,这是存储测试结果的最佳选择。能否发布用于kubectl cp的命令?此外,装载卷也会有所帮助。感谢您的回复。更新了最新的问题。有没有办法直接从绑定的持久卷中获取文件?谢谢您的回复。我不明白怎么做第三步。这就是我问题的全部根源。我正在使用Jenkins声明性管道。对于NFS共享,您将需要一个NFS服务器(可以是任何Linux系统,请检查),然后您可以将共享卷装载到您的代理(检查同一篇文章)和您的。谢谢!我要试试这个。