我们正在考虑将 Jenkins 迁移到 Kubernetes (GKE) 并使用 Jenkins Kubernetes 插件在 Pod 中运行作业。但是,我们的构建基础架构使用 ccache 来优化构建速度,并且我们将 ccache 文件保存在 jenkins 代理上(每次构建都会读取和写入每个代理上的本地 ccache 文件夹)。
根据我的理解,k8s 中的 Jenkins 代理 pod 是短暂的,这意味着它们仅供一次性使用。我正在努力理解 ccache 是如何设置的。这是我的想法:
我找到了可能相关的 https://issues.jenkins.io/browse/JENKINS-42422,但我认为没有解决方案。
关于如何实现这一点的任何其他想法?无法使用 ccache 对我们来说是一个交易破坏者,因为与静态代理相比,它会使构建周转时间更糟。
答案 0 :(得分:0)
有状态并没有违背 Kubernetes 的目的。例如,如果您在集群中运行数据库,则需要有状态应用程序。 我建议您使用 glusterfs/ceph/nfs/EFS(AWS) 并使用 readWriteMany for ccache。
此博客有更多详细信息:
https://blog.hiya.com/kubernetes-base-jenkins-stateful-agents/