目录

  • 前言
  • 如何安装Jenkins?环境准备开始安装Jenkins
  • 初始化配置访问首页输入管理员密码安装插件创建管理员实例配置配置完成
  • 构建Spring Boot 项目配置JDK、maven、Git环境安装插件添加 SSH Server添加凭据新建Maven项目构建任务
  • 如何构建托管在GitLab的项目?安装插件添加GitLab API token配置GitLab插件新建任务后续操作
  • 多模块项目如何构建?
  • 总结

前言

自动持续集成不知道大家伙有没有听说过,有用过类似的工具吗?

简而言之,自动持续集成的工作主要是能对项目进行构建、自动化测试和发布。

今天这篇文章就来讲讲常用的持续集成的工具Jenkins以及如何自动构建Spring Boot项目。

如何安装Jenkins?

Jenkins是Java开发的一套工具,可以直接下载war包部署在Tomcat上,但是今天作者用最方便、最流行的Docker安装。

环境准备

在开始安装之前需要准备以下环境和工具:

  1. 一台服务器,当然没有的话可以用自己的电脑,作者的服务器型号是Ubuntu
  2. JDK环境安装,作者的版本是1.8,至于如何安装,网上很多教程。
  3. 准备maven环境,官网下载一个安装包,放在指定的目录下即可。
  4. Git环境安装,网上教程很多。
  5. 代码托管平台,比如GithubGitLab等。

开始安装Jenkins

Docker安装Jenkins非常方便,只要跟着作者的步骤一步步操作,一定能够安装成功。

Docker环境安装

每个型号服务器安装的方式各不相同,读者可以根据自己的型号安装,网上教程很多。

拉取镜像

我这里安装的版本是jenkins/jenkins:2.222.3-centos,可以去这里获取你需要的版本: https://hub.docker.com/_/jenkins?tab=tags。执行如下命令安装:

docker pull jenkins/jenkins:2.222.3-centos

创建本地数据卷

在本地创建一个数据卷挂载docker容器中的数据卷,我创建的是/data/jenkins_home/,命令如下:

 mkdir -p /data/jenkins_home/

需要修改下目录权限,因为当映射本地数据卷时,/data/jenkins_home/目录的拥有者为root用户,而容器中jenkins用户的 uid1000

chown -R 1000:1000 /data/jenkins_home/

创建容器

除了需要挂载上面创建的/data/jenkins_home/以外,还需要挂载mavenjdk的根目录。启动命令如下:

docker run -d --name jenkins -p 8040:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home -v /usr/local/jdk:/usr/local/jdk -v /usr/local/maven:/usr/local/maven jenkins/jenkins:2.222.3-centos

以上命令解析如下:

  1. -d:后台运行容器
  2. --name:指定容器启动的名称
  3. -p:指定映射的端口,这里是将服务器的8040端口映射到容器的8080以及50000映射到容器的50000「注意:」 804050000一定要是开放的且未被占用,如果用的是云服务器,还需要在管理平台开放对应的规则。
  4. -v:挂载本地的数据卷到docker容器中,「注意:」 需要将JDKmaven的所在的目录挂载。

初始化配置

容器启动成功,则需要配置Jenkins,安装一些插件、配置远程推送等等。

访问首页

容器创建成功,访问http://ip:8040,如果出现以下页面表示安装成功:

输入管理员密码

启动成功,则会要求输入密码,如下图:

这里要求输入的是管理的密码,提示是在/var/jenkins_home/secrets/initialAdminPassword,但是我们已经将/var/jenkins_home这个文件夹挂载到本地目录了,因此只需要去挂载的目录/data/jenkins_home/secrets/initialAdminPassword文件中找。

输入密码,点击继续。

安装插件

初始化安装只需要安装社区推荐的一些插件即可,如下图:

这里选择安装推荐的插件,然后 Jenkins 会自动开始安装。

「注意:」 如果出现想插件安装很慢的问题,找到/data/jenkins_home/updates/default.json文件,替换的内容如下:

  1. updates.jenkins-ci.org/download 替换为mirrors.tuna.tsinghua.edu.cn/jenkins
  2. www.google.com 替换为www.baidu.com

执行以下两条命令:

sed -i 's/www.google.com/www.baidu.com/g' default.jsonsed -i 's/updates.jenkins-ci.org/download/mirrors.tuna.tsinghua.edu.cn/jenkins/g' default.json

全部安装完成,继续下一步。

创建管理员

随便创建一个管理员,按要求填写信息,如下图:

实例配置

配置自己的服务器IP端口,如下图:

配置完成

按照以上步骤,配置完成后自动跳转到如下界面:

构建Spring Boot 项目

在构建之前还需要配置一些开发环境,比如JDKMaven等环境。

配置JDK、maven、Git环境

Jenkins集成需要用到mavenJDKGit环境,下面介绍如何配置。

首先打开系统管理->全局工具配置

分别配置JDKGitMaven的路径,根据你的实际路径来填写。

「注意」:这里的JDKGitMaven环境一定要挂载到docker容器中,否则会出现以下提示:

 xxxx is not a directory on the Jenkins master (but perhaps it exists on some agents)

配置成功后,点击保存。

安装插件

除了初始化配置中安装的插件外,还需要安装如下几个插件:

  1. Maven Integration
  2. Publish Over SSH

打开系统管理 -> 插件管理,选择可选插件,勾选中 Maven IntegrationPublish Over SSH,点击直接安装

在安装界面勾选上安装完成后重启 Jenkins

添加 SSH Server

SSH Server 是用来连接部署服务器的,用于在项目构建完成后将你的应用推送到服务器中并执行相应的脚本。

打开 系统管理 -> 系统配置,找到 Publish Over SSH 部分,选择新增

点击 高级 展开配置

最终配置如下:

配置完成后可点击 Test Configuration 测试连接,出现 success 则连接成功。

添加凭据

凭据 是用来从 Git 仓库拉取代码的,打开 凭据 -> 系统 -> 全局凭据 -> 添加凭据

这里配置的是Github,直接使用用户名密码,如下图:

创建成功,点击保存。

新建Maven项目

以上配置完成后即可开始构建了,首先需要新建一个Maven项目,步骤如下。

创建任务

首页点击新建任务->构建一个maven项目,如下图:

源码管理

在源码管理中,选择Git,填写仓库地址,选择之前添加的凭证

构建环境

勾选 Add timestamps to the Console Output,代码构建的过程中会将日志打印出来。

构建命令

Build中,填写 Root POMGoals and options,也就是你构建项目的命令。

Post Steps

选择Run only if build succeeds,添加 Post 步骤,选择 Send files or execute commands over SSH

上图各个选项解析如下:

  1. name:选择前面添加的SSH Server
  2. Source files:要推送的文件
  3. Remove prefix:文件路径中要去掉的前缀,
  4. Remote directory:要推送到目标服务器上的哪个目录下
  5. Exec command:目标服务器上要执行的脚本

Exec command指定了需要执行的脚本,如下:

# jdk环境,如果全局配置了,可以省略export JAVA_HOME=/xx/xx/jdkexport JRE_HOME=/xx/xx/jdk/jreexport CLASSPATH=/xx/xx/jdk/libexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH # jenkins编译之后的jar包位置,在挂载docker的目录下JAR_PATH=/data/jenkins_home/workspace/test/target# 自定义的jar包位置DIR=/data/test## jar包的名称JARFILE=swagger-demo-0.0.1-SNAPSHOT.jarif [ ! -d $DIR/backup ];then   mkdir -p $DIR/backupfips -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9if [ -f $DIR/backup/$JARFILE ]; then rm -f $DIR/backup/$JARFILEfimv $JAR_PATH/$JARFILE $DIR/backup/$JARFILEjava -jar $DIR/backup/$JARFILE > out.log &if [ $? = 0 ];then        sleep 30        tail -n 50 out.logficd $DIR/backup/ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf

以上脚本大致的意思就是将kill原有的进程,启动新构建jar包。

脚本可以自己定制,比如备份Jar等操作。

构建任务

项目新建完成之后,一切都已准备就绪,点击立即构建可以开始构建任务,控制台可以看到log输出,如果构建失败,在log中会输出原因。

任务构建过程会执行脚本启动项目。

如何构建托管在GitLab的项目?

上文介绍的例子是构建Github仓库的项目,但是企业中一般都是私服的GitLab,那么又该如何配置呢?

其实原理是一样的,只是在构建任务的时候选择的是GitLab的凭据,下面将详细介绍。

安装插件

系统管理->插件管理->可选插件中搜索GitLab Plugin并安装。

添加GitLab API token

首先打开 凭据 -> 系统 -> 全局凭据 -> 添加凭据,如下图:

上图中的API token如何获取呢?

打开GitLab(例如公司内网的GitLab网站),点击个人设置菜单下的setting,再点击Account,复制Private token,如下:

上图的Private token则是API token,填上即可。

配置GitLab插件

打开系统管理->系统配置->GitLab,如下图:

配置成功后,点击Test Connection,如果提示Success则配置成功。

新建任务

新建一个Maven任务,配置的步骤和上文相同,唯一区别则是配置Git仓库地址的地方,如下图:

仓库地址和凭据需要填写Gitlab相对应的。

后续操作

后续一些操作,比如构建项目,控制台输出等操作,都是和GitHub操作相同,不再赘述了。

多模块项目如何构建?

如果你的多模块不是通过私服仓库依赖的,那么在构建打包是有先后顺序的,在新建任务的时候需要配置Buildmaven命令,如下图:

上图中的Goals and options中的命令就是构建api这个模块的命令,至于这个命令是什么意思,前面有单独一篇文章介绍过,请看一次打包引发的思考,原来maven还能这么玩~。

总结

本文详细的介绍了如何从零安装部署一个Jenkins,这下又能吹牛了,哈哈....

来源:https://www.cnblogs.com/Chenjiabing/p/13953130.html

在我的 程序员cxuan 同名公众号下回复 cxuan 领取下面这些 PDF,纯自己手写。

jenkins 插件目录_三十二张图告诉你如何用Jenkins构建SpringBoot相关推荐

  1. 十二张图详解Redis的数据结构和对象系统

    回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的Redis! 本文来自:张狗蛋的技术之路 Redis是一个开源的 key-value 存储系统,它使用六种底层数据结构构建了包含字符串对 ...

  2. 三十二、图的创建深度优先遍历(DFS)广度优先遍历(BFS)

    一.图的基本介绍 为什么要有图 前面我们学了线性表和树 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示多对多的关系时, 这里我们就用到了图. 图的举例 ...

  3. java卡片布局显示效果_三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)...

    摘自 http://blog.csdn.net/liujun13579/article/details/7773945 卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组 ...

  4. 十二张图详解淘宝架构变迁

    创立之初,为了快速上线,抢占市场,淘宝选择了当时流行的LAMP架构,用PHP作为网站开发语言, Linux作为操作系统,Apache作为Web服务器,MySQL为数据库,用了三个月不到的时间淘宝就上线 ...

  5. 十二张图,踹开消息队列的大门

    消息队列つ登场 大家好,我是老三,是一个电商公司的程序员,负责订单系统的开发. 掉了不少头发之后,我完成了用户订单支付的开发. 订单支付的业务是这样的.用户支付完成之后,我需要更新订单状态,这一部分是 ...

  6. 五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强?

    前言 Nacos是阿里巴巴开源的服务注册中心以及配置中心,致力于给开发者提供一款便捷.简单上手的开源框架. Nacos究竟有什么惊人的地方呢?看下图: 从上图不难看出阿里巴巴的野心,一个Nacos干掉 ...

  7. 缓存与库先写哪个,这十几张图告诉你

    作者|莱乌 日常生产场景中,为了避免大量请求同时打在数据库上导致故障,数据库+缓存的方式已经成了日常标配. 对于读取的部分,大家都很熟悉.但是对于写的部分,到底是先写库还是先写缓存,这点可能困扰着很多 ...

  8. 第三十二章 XML基础知识概念

    文章目录 第三十二章 XML基础知识概念 attribute CDATA区域 comment content model default namespace DOM DTD(文档类型定义) eleme ...

  9. 安卓修改电池容量教程_图吧小白教程 篇三十二:手机拆换原装电池教程——替换寿命将届的原厂电池,提升手机续航...

    图吧小白教程 篇三十二:手机拆换原装电池教程--替换寿命将届的原厂电池,提升手机续航 2019-12-05 13:01:04 1点赞 20收藏 1评论 你是AMD Yes党?还是intel和NVIDI ...

最新文章

  1. python机器学习可视化工具Yellowbrick介绍及平行坐标图实战示例
  2. 宝塔php共生,宝塔面板如何开启php扩展
  3. 微软推出新语言Bosque,超越结构化程序设计
  4. 【ArcGIS风暴】数字化实验:数据采集与编辑完整操作流程
  5. matlab考试试题,matlab-考试试题-
  6. Android签名详解(debug和release)
  7. 5G冲击下,软件测试行业面临的新挑战和机遇
  8. JDK+TOMCAT+MYSQL图文安装指南(一)
  9. 使用cdn和npm引入的区别_带你体验 Vue2 和 Vue3 开发组件有什么区别
  10. 计算机能否代替老师英语作文,雅思大作文范文:电脑不可取代老师
  11. 布客·ApacheCN 翻译/校对/笔记整理活动进度公告 2020.1
  12. Linux中设置Java程序开机自动运行
  13. 基于单片机的贪吃蛇游戏
  14. ORACLE OCM备考之外部表管理使用非压缩属性脚本报错KUP-04095与权限
  15. Python 去除重复行数据
  16. 最全的BAT大厂面试题整理
  17. mdadm 创建md 删除md步骤
  18. 因数分解 EduCoder习题
  19. 根据分钟数换算成天/小时/分钟
  20. vue-element-admin 修改默认的全局字体尺寸为mini

热门文章

  1. mellanox 网卡驱动_收购Mellanox之后 NVIDIA发布全球首款25G安全智能网卡
  2. linux脚本计算器加减乘除,用shell写一个简易计算器,可以实现加、减、乘、除运算,假如脚本名字为1.sh,执行示例:./1....
  3. linux配置ip地址 suse_suse linux中为单网卡配置多IP的方法
  4. Simple Polygon Embedding CodeForces - 1354C1(计算几何)
  5. KDD 2021 | Neural Auction: 电商广告中的端到端机制优化方法
  6. Python机器学习---Pyecharts制作可视化大屏
  7. 计算机配置 凭据分配,win7怎样添加凭据?-win7添加凭证的方法 - 河东软件园
  8. oracle需求分析,8-oracle_分析函数(二)
  9. mysql字符集问题_mysql字符集问题
  10. S3C2440中断跳转分析