kubernetes下的jenkins如何设置maven

简介: jenkins在构建的时候,可能会用到各种定制的maven,例如不同JDK版本,不同硬件配置,这些在kubernetes环境下应该如何配置呢?请随本文一同实战

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码): https://github.com/zq2599/blog_demos

关于kubernetes环境的jenkins集群

  • 在kubernetes环境部署的jenkins集群,执行任务时会新建pod,任务完成后pod被销毁,架构如下所示:

在这里插入图片描述

关于jenkins构建maven

  • 作为java开发者,常用jenkins构建maven工程,当jenkins部署到kubernetes之上后,要做一些设置才能顺利编译构建

环境信息

  • 本次实战涉及到的环境信息如下:
  1. kubernetes:1.15
  2. jenkins:2.190.2
  3. 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私有仓库是经常用到的,作用如下:
  1. 缓存中央仓库的jar,这样局域网内的开发者在运行maven工程时,所需jar是从nexus下载的,而不必去中央仓库下载,可节省下载时间;
  2. 自己做的二方库发布到nexus私有仓库,给局域网内的其他人使用;
  • 通常是通过配置maven的settings.xml来访问nexus私有仓库,因此,jenkins在构建maven项目时也要用到配置好的settings.xml文件,才能访问nexus私有仓库;
  • PS:如果您想了解更多nexus的细节,请参考文章《Ubuntu部署和体验Nexus3》

设置maven的settings.xml

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

  1. 把settings.xml做成configmap;
  2. 挂载到执行任务的pod中(在jenkins上配置好,以后创建的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脚本,里面有指定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项目并取得结果了,下一篇文章会挑选一个热门开源项目来实战编译构建。

欢迎关注阿里云开发者社区博客:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
3月前
|
Kubernetes jenkins 持续交付
Artifact Hub在Kubernetes中的应用:部署Jenkins的脚本整理
以上步骤断言清晰明确地描述了如何通过Artifact Hub 使用Helm图表来部署Kubernetes 中得Jenkis 实例,并且提供了相应得Shell 脚本作为执行指南. 这样不但能够帮助用户快速地进行操作, 同时也能够通过自定义参数来满足不同用户需求.
136 5
存储 jenkins 持续交付
600 2
|
5月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
338 0
|
12月前
|
Java jenkins 持续交付
Jenkins集成Maven
通过以上步骤,可以在Jenkins中成功集成Maven,实现自动化构建和部署。通过定时构建、SCM轮询等方式,可以确保代码库中的最新变更能够及时构建和测试,提高开发效率和代码质量。这种集成方式在实际项目中具有广泛的应用前景,能够显著提升团队的协作效率。
374 8
|
存储 Java Linux
【Maven】——基础入门,插件安装、配置和简单使用,Maven如何设置国内源
Maven插件安装,Maven项目构建,依赖管理,Haven Help插件,Maven仓库,Maven如何设置国内源
|
Kubernetes 监控 Java
如何设置 Kubernetes的垃圾回收策略为定期
如何设置 Kubernetes的垃圾回收策略为定期
|
弹性计算 Kubernetes Perl
k8s 设置pod 的cpu 和内存
在 Kubernetes (k8s) 中,设置 Pod 的 CPU 和内存资源限制和请求是非常重要的,因为这有助于确保集群资源的合理分配和有效利用。你可以通过定义 Pod 的 `resources` 字段来设置这些限制。 以下是一个示例 YAML 文件,展示了如何为一个 Pod 设置 CPU 和内存资源请求(requests)和限制(limits): ```yaml apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image:
1691 1
|
存储 Kubernetes 监控
Kubernetes设置
Kubernetes设置
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
969 1
|
存储 Kubernetes 监控
Kubernetes设置
【10月更文挑战第3天】Kubernetes设置
165 5