对于k8s环境的jenkins集群
k8s下搭建了jenkins集群后,执行工作时会新建pod,工作实现后pod被销毁,架构如下图所示:
在k8s搭建jenkins集群的步骤请参照《》
对于jenkins构建maven
作为java开发者,用jenkins构建maven工程是常见的编译构建形式,当jenkins部署到kubernetes之上后,要做一些设置能力顺利编译构建;
实战简介
本次实战是在k8s的jenkins环境编译构建<font color="blue">spring-cloud-alibaba</font>这个开源的maven工程,波及到的环境信息如下:
- kubernetes:1.15
- jenkins:2.190.2
- maven:3.6.3
- spring-cloud-alibaba:2.1.1.RELEASE
设置maven
如果您曾经参考《》一文在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公有仓库;
- 如果您想理解更多nexus的细节,请参考文章《》
设置maven的settings.xml
这是本文的重点,思路如下:
- 把settings.xml做成configmap;
- 挂载到执行工作的pod中;
- 执行jenkins的pipeline脚本中,执行mvn命令时指定应用挂载的settings.xml文件:
接下来是实现上述思路的操作:
- 筹备好settings.xml文件,外面已配置好nexus公有仓库的信息,次要是server节点和mirror节点,参考下图:
- 将settings.xml上传到kubernetes环境,执行以下命令创立名为settings.xml的configmap:
kubectl create configmap settings.xml \--from-file=settings.xml \-n helm-jenkins
上述命令有以下两点须要留神:
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脚本,可作为参考:
设置pod内存和CPU
执行工作的pod的内存如果太小,可能会导致maven或者gradle编译时报OutOfMemory谬误,因而须要设置pod内存:
- 在Configure System页面,找到Pod Templates的配置,点击下图红框中的Advanced...按钮:
- 如下图红框所示,依照理论需要对CPU和内存进行调整,我这里设置了1G的内存:
- 点击底部的Save按钮保留设置;
输入构建后果
mavne工程编译构建胜利后,想要失去构建后果能够有多种路径,这里提供一种参考:通过数据卷的形式将构建后果保留到到宿主机
- 在Configure System页面,找到Pod Templates的配置,如下图,增加卷抉择Host Path Volume:
- 如下所示,主机门路填写/usr/local/jenkins_output,挂载门路填写/home/jenkins/jenkins_output,这样就把pod的文件夹映射到宿主机上了
- 留神:确保宿主机的/home/jenkins/jenkins_output有写权限
通过以上设置,jenkins环境当初能够顺利构建maven我的项目了,下一篇文章,会筛选一个热门开源我的项目来实战编译构建。
欢送关注我的公众号:程序员欣宸
https://github.com/zq2599/blog_demos