前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kubernetes下的jenkins如何设置maven

kubernetes下的jenkins如何设置maven

作者头像
程序员欣宸
发布2020-03-18 17:18:23
1.8K0
发布2020-03-18 17:18:23
举报
文章被收录于专栏:实战docker实战docker

关于kubernetes环境的jenkins集群

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

在kubernetes搭建jenkins集群的细节,请参考《Helm部署和体验jenkins》

关于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插件:

  1. 在设置页面进入Global Tool Configuration,如下图:
  1. 新建一个Maven配置,如下图,名为mvn-3.6.3,版本选择3.6.3:
  1. 点击底部的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文件;

接下来是实现上述思路的操作:

  1. 准备好settings.xml文件,里面已配置好nexus私有仓库的信息,主要是server节点和mirror节点,内容参考下图:
  1. 将settings.xml上传到kubernetes环境,执行以下命令创建名为settings.xml的configmap:
代码语言:javascript
复制
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;

  1. Configure System页面,找到Pod Templates的配置,增加一个Config Map Volume,如下:
  1. Config Map名称填写settings.xml,挂载路径是/home/jenkins/settings,如下图:
  1. 点击底部的Save保存设置;
  2. 经过以上设置,执行pipeline任务时,pod的/home/jenkins/settings目录下就会有settings.xml文件,您只需指定使用此文件即可,mvn命令的-s参数就是用来指定settings.xml文件的,下图是一段pipeline脚本,里面有指定settings.xml的参数,可作为参考:

设置pod内存和CPU

pod内存如果太小,可能导致maven或者gradle运行时报OutOfMemory错误,因此需要设置pod内存:

  1. Configure System页面,找到Pod Templates配置,点击下图红框中的Advanced…按钮:
  1. 如下图红框所示,按照实际需求对CPU和内存进行调整,我这里设置了1G的内存:
  1. 点击底部的Save保存设置;

输出构建结果

mavne工程编译构建成功后,我们需要拿到构建结果(例如是个jar文件),这里提供一种方式作为参考:通过数据卷的方式将构建结果保存到宿主机

  1. Configure System页面,找到Pod Templates配置,如下图,添加卷选择Host Path Volume:
  1. 如下所示,主机路径填写/usr/local/jenkinsoutput,挂载路径填写/home/jenkins/jenkinsoutput,这样就把pod的文件夹映射到宿主机上了:
  1. 请确保宿主机的/home/jenkins/jenkins_output有写权限

经过以上设置,jenkins环境已经可以顺利构建maven项目并取得结果了,下一篇文章会挑选一个热门开源项目来实战编译构建。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于kubernetes环境的jenkins集群
  • 关于jenkins构建maven
  • 环境信息
  • 设置maven
  • 关于maven的settings.xml
  • 设置maven的settings.xml
  • 设置pod内存和CPU
  • 输出构建结果
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档