kubernetes 下的 jenkins 如何设置 maven
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
关于 kubernetes 环境的 jenkins 集群
在 kubernetes 环境部署的 jenkins 集群,执行任务时会新建 pod,任务完成后 pod 被销毁,架构如下所示:
在 kubernetes 搭建 jenkins 集群的细节,请参考《Helm部署和体验jenkins》
关于 jenkins 构建 maven
作为 java 开发者,常用 jenkins 构建 maven 工程,当 jenkins 部署到 kubernetes 之上后,要做一些设置才能顺利编译构建
环境信息
本次实战涉及到的环境信息如下:
kubernetes:1.15
jenkins:2.190.2
maven:3.6.3
设置 maven
如果您已经参考《Helm部署和体验jenkins》在 kubernetes 部署了 jenkins,接下来要做的是设置 maven 插件:
在设置页面进入 Global Tool Configuration,如下图:
新建一个 Maven 配置,如下图,名为 mvn-3.6.3,版本选择 3.6.3:
点击底部的 Save 保存,今后在 pipeline 任务中就能通过名称 mvn-3.6.3 使用此 maven 工具了;
关于 maven 的 settings.xml
局域网内的 nexus 私有仓库是经常用到的,作用如下:
缓存中央仓库的 jar,这样局域网内的开发者在运行 maven 工程时,所需 jar 是从 nexus 下载的,而不必去中央仓库下载,可节省下载时间;
自己做的二方库发布到 nexus 私有仓库,给局域网内的其他人使用;
通常是通过配置 maven 的 settings.xml 来访问 nexus 私有仓库,因此,jenkins 在构建 maven 项目时也要用到配置好的 settings.xml 文件,才能访问 nexus 私有仓库;
PS:如果您想了解更多 nexus 的细节,请参考文章《Ubuntu部署和体验Nexus3》
设置 maven 的 settings.xml
这是本文的重点 ,思路如下:
把 settings.xml 做成 configmap;
挂载到执行任务的 pod 中(在 jenkins 上配置好,以后创建的 pod 都会按此配置挂载);
jenkins 任务的 pipeline 脚本中,执行 mvn 命令时指定挂载的 settings.xml 文件;
接下来是实现上述思路的操作:
准备好 settings.xml 文件,里面已配置好 nexus 私有仓库的信息,主要是 server 节点和 mirror 节点,内容参考下图:
将 settings.xml 上传到 kubernetes 环境,执行以下命令创建名为 settings.xml 的 configmap:
上述命令有以下两点需要注意:a. from-file 参数表示此 configmap 的内容来源,是当前目录下名为 settings.xml 的文件;b. 此 configmap 的 namespace 名为 helm-jenkins ,这是 jenkins 所在的 namespace;
Configure System 页面,找到 Pod Templates 的配置,增加一个 Config Map Volume,如下:
Config Map 名称填写 settings.xml ,挂载路径是/home/jenkins/settings,如下图:
点击底部的 Save 保存设置;
经过以上设置,执行 pipeline 任务时,pod 的 /home/jenkins/settings 目录下就会有 settings.xml 文件,您只需指定使用此文件即可,mvn 命令的 -s 参数就是用来指定 settings.xml 文件的,下图是一段 pipeline 脚本,里面有指定 settings.xml 的参数,可作为参考:
设置 pod 内存和 CPU
pod 内存如果太小,可能导致 maven 或者 gradle 运行时报 OutOfMemory 错误,因此需要设置 pod 内存:
Configure System 页面,找到 Pod Templates 配置,点击下图红框中的 Advanced... 按钮:
如下图红框所示,按照实际需求对 CPU 和内存进行调整,我这里设置了 1G 的内存:
点击底部的 Save 保存设置;
输出构建结果
mavne 工程编译构建成功后,我们需要拿到构建结果(例如是个 jar 文件),这里提供一种方式作为参考:通过数据卷的方式将构建结果保存到宿主机
Configure System 页面,找到 Pod Templates 配置,如下图,添加卷选择 Host Path Volume :
如下所示,主机路径填写 /usr/local/jenkinsoutput ,挂载路径填写/home/jenkins/jenkinsoutput,这样就把 pod 的文件夹映射到宿主机上了:
请确保宿主机的/home/jenkins/jenkins_output 有写权限
经过以上设置,jenkins 环境已经可以顺利构建 maven 项目并取得结果了,下一篇文章会挑选一个热门开源项目来实战编译构建。
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/0e920bdc2635bd4e92d957bce】。文章转载请联系作者。
评论