乐趣区

关于云计算:k8s下的jenkins如何设置maven

对于 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 公有仓库是常常用到的,作用如下:

  1. 缓存地方仓库的 jar,这样局域网内的开发者在运行 maven 工程时,所需 jar 是从 nexus 下载的,而不用去地方仓库下载,可节俭下载工夫;
  2. 本人做的二方库公布到 nexus 公有仓库,给局域网内的其他人应用;

通常是通过配置 maven 的 settings.xml 来拜访 nexus 公有仓库的,因而,jenkins 在构建 maven 我的项目时也要用到配置好的 settings.xml 文件,能力拜访 nexus 公有仓库;

  • 如果您想理解更多 nexus 的细节,请参考文章《》

设置 maven 的 settings.xml

这是本文的重点,思路如下:

  1. 把 settings.xml 做成 configmap;
  2. 挂载到执行工作的 pod 中;
  3. 执行 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

退出移动版