关于k8s环境的jenkins集群

k8s下搭建了jenkins集群后,执行任务时会新建pod,任务完成后pod被销毁,架构如下图所示:

在k8s搭建jenkins集群的步骤请参照《》

关于jenkins构建maven

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

实战简介

本次实战是在k8s的jenkins环境编译构建spring-cloud-alibaba这个开源的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

k8s下的jenkins如何设置maven的更多相关文章

  1. Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)【转】

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  2. Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  3. mac下设置maven环境

    在mac系统下设置maven环境. 1.首先通过终端打开    .bash_profile 2.设置maven解压后的路径地址 环境变量设置如下: MAVEN_HOME .PATH 两个变量即可 3. ...

  4. Linux下的Jenkins+Tomcat+Maven+Gitlab+Shell环境的搭建使用(jenkins自动化部署)

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  5. windows10下设置Maven的本地仓库和阿里云的远程中央仓库

    感谢原文作者:测试zhang 原文链接:https://www.jianshu.com/p/1782feee6eff 菜鸟:https://www.runoob.com/maven/ 1.设置Mave ...

  6. 使用Jenkins配置Git+Maven的自动化构建

    Jenkins是一个开源的持续集成工具,应用Jenkins搭建持续集成环境,可以进行自动构建.自动编译和部署,非常方便. 在服务器比较少的情况下,Jenkins的优势并不明显,但是随着项目发展,服务器 ...

  7. jenkins+docker 持续构建非docker in docker jenkins docker svn maven

    工欲善其事必先利其器,为了解脱程序员的,我们程序员本身发明了很多好用的工具,通过各种工具的组合来达到我们想要的结果 本文采用jenkins docker svn maven作为相关工具,项目sprin ...

  8. Jenkins Jenkins结合GIT Maven持续集成环境配置

    Jenkins结合GIT Maven持续集成环境配置   by:授客 QQ:1033553122 安装Git插件 1 安装Git客户端 1 安装JAVA JDK及MAVEN 2 Jenkins JDK ...

  9. 使用jenkins构建一个maven项目

    1.登陆到jenkins首页,创建项目-->选择maven-->输入项目名称-->选择项目类型 2.进入项目配置:{先写一下项目描述和设置下保留的历史构建,然后向下拉} 找到源吗管理 ...

随机推荐

  1. Java高级特性———Java注解

    什么是注解(Annotation)? 注解是放在Java源码的类.方法.字段.参数上的一种标签,在Java SE 5.0版本中开始引入.注解同class和interface一样,也属于一种类型. 如何 ...

  2. k8s设置pod运行完自动删除

    本环境apiserver.controller还要scheduler都是以pod的形式运行的,修改/etc/kubernetes/manifests下面对应的三个.yaml静态文件,加入 - --fe ...

  3. composer(三) 基本命令

    composer基本命令 composer init (-q) 利用composer创建新应用 composer init -q composer require 和 composer install ...

  4. CRMEB单商户商城系统v4.0源码,含前端uni-app源码

    CRMEB商城系统是基于ThinkPhp6.0+Vue开发的一套新零售移动电商系统,CRMEB系统就是集客户关系管理+营销电商系统,能够快速积累客户.会员数据分析.智能转化客户. 有效提高销售.会员维 ...

  5. laravel在视图中使用类似于“__PUBLIC__”,“__UPLOADS__”的操作

    首先在config文件夹下建立static.php文件 然后在里面定义常量 例: <?php define('__PUBLIC__', '/'); define('__UPLOADS__', ' ...

  6. jkd1.8 stream

    目录 Stream 创建流 通过集合创建,例如Map (常用) 通过数组方式创建 通过Stream静态方法创建 中间操作 筛选和切片 filter limit skip distinct 映射 map ...

  7. java初探(1)之秒杀中的rabbitMQ

    rabbitMQ 消息队列,通过一定的通信协议,生产者和消费者在应用程序内传递通信. 主要的作用,提高负载,减耦合. 场景描述:当点击秒杀按钮的那个时刻,有很高的并发量,客户端发出请求之后,会判断库存 ...

  8. idea中右击的快捷键都找不到 Diagrams

    今天突然发现了一件很恐怖的事情,那就是我的IDEA的右击中找不到Diagrams了,因为我是用这个东西打开 .bpmn文件生成png的,突然没了.. 说一下解决吧 在FIle -> settin ...

  9. H5游戏定制,4大优势助力企业曝光10W+

    H5游戏定制,4大优势助力企业曝光10W+ 移动互联网已成为了人们生活的一部分,普通广告形式已很难吸引用户的眼球,企业要怎样才能将广告更广泛的传播给更多用户呢?根据TOM游戏多年从业经验,为大家分享以 ...

  10. Linux:基础命令三

    一.软链接 相当于windows中的快捷方式,为了方便用户在使用时更快找到 ln -s /application/appche2.2.0/  /application/appche       注意: ...