大家好,我是阿飞云

怕什么真理无穷,进一步有近一步的欢喜

6dbe726c063ef1a1f4d1943226be960f.png

本文是团队内小兄弟的学习笔记整理而来。看完本文大体了解为什么要使用Jenkins,部署Jenkins依赖的环境,以及如何用Jenkins进行应用自动部署。

为什么要搭建Jenkins环境

在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试;或者前后端分离后,经常会修改接口,然后重新部署;这些情况都会涉及到频繁的打包部署;手动打包常规步骤:

•1.提交代码•2.问一下同组小伙伴有没有要提交的代码•3.拉取代码并打包(war包,或者jar包)•4.上传到Linux服务器•5.查看当前程序是否在运行•6.关闭当前程序•7.启动新的jar包•8.观察日志看是否启动成功•9.如果有同事说,自己还有代码没有提交……再次重复1到8的步骤!!!!!(一上午没了)

那么,有一种工具能够实现,将代码提交到git后就自动打包部署,答案是肯定的:Jenkins 。当然除了Jenkins以外,也还有其他的工具可以实现自动化部署,如Hudson等 ,只是Jenkins相对来说,使用得更广泛。

总结一下:不搭建自动化环境的话,如果需求急,任务多的情况上,通过人工的方式操作,那效率真的太低了,拥有自动化部署环境,那幸福感很快就上来了:

•程序自动部署,节约时间•环境一键部署,不怕频繁改代码

Jenkins 基本介绍

Jenkins是一个开源软件项目,是基于Java开发的一种[持续集成]工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

237a83e6eaf37501a36297666d422121.png

基本环境

•1.jdk环境,Jenkins是java语言开发的,因需要jdk环境。•2.git/svn客户端,因一般代码是放在git/svn服务器上的,我们需要拉取代码。•3.maven客户端,因一般java程序是由maven工程,需要maven打包,当然也有其他打包方式,如:gradle 以上是自动化部署java程序jenkins需要的基本环境,请自己提前安装好,下面着重讲解Jenkins的安装部署配置。dac3ee37b168f93a78bb7a623e6fb935.png

Jenkins部署安装

本次使用虚拟机进行Jenkins自动化部署环境的搭建,相关的软件版本和基本环境安装如下:

一、环境准备

1、Linux

本文基于虚拟机进行部署操作,操作系统版本:Ubuntu 20.04.3 LTS

本次用到的服务器信息:3台linux虚拟机 192.168.179.130:jenkins主节点 192.168.179.133:jenkins从节点 192.168.179.132:应用服务器

2、JDK安装

更新软件包列表
sudo apt-get update


安装openjdk-8-jdk:
sudo apt-get install openjdk-8-jdk


查看java版本,看看是否安装成功
java -version

这里我安装的java版本是:20e2952b1415aa81f7d909dd535604a0.png

3、Maven安装

安装maven的命令

sudo apt install maven

成功后使用命令查看版本等信息

mvn -v

150360b680e972b428b7040b28bbafbb.png

二、部署Jenkins

1、war包下载

wget https://mirrors.huaweicloud.com/jenkins/war/latest/jenkins.war

2、启动Jenkins

java -jar jenkins.war --httpPort=8001

启动后会生成密码(61d703f7a3464674b8a8a36b4dd915f5),如图所示:cfe97d8978e81f7c2d680a1e38435c84.png

3、初始化Jenkins

在浏览器中输入http://your_ip_or_domain:80[1]01a2fde2e7f22a86f77bc486e2407c6c4a.pngc6b1fb2ca7a494671c62f68c89e92166.png耐心等待插件下载完成705e3a3ebc397cc9a94228e50fb38726.png输入想创建的用户名和密码:admin/admin12345623745f84afef83cb7f93cbc32038ec33.pngd5def708904f1e0949a7534694b973e4.png初始界面如下:f7ad8e949179e4e01d881f6d276db7c4.png

4、Jenkins插件

插件能够帮助我们更好的使用jenkins,这里介绍几个常用的插件。具体操作步骤如下af332c774b2afc647f3ac963bd561b41.pngca27f7a1bf4163a9ecb007d1db97ba1b.png0cebf439b52c60db0a5a6a724d383fe7.png

1)rebuilder

重新构建任务

2)safe restart

安全重启jenkins

3)Maven Integration plugin

帮助创建maven任务0a14669443be0cd8acc39947be299923.png

4)git parameter

安装此插件后可以进行参数化构建,后续会介绍操作方法,详细的操作也可以参考:http://www.mydlq.club/article/45/

5)publish-over-ssh

此插件可以帮助我们将编译的好jar/war包通过ssh的方式丢到对应的服务器上,但是目前publish-over-ssh暂停发布了,在插件管理中搜不到此插件。d25dd77c3ca7a1d7ec2ce1e45c90a381.png39e7ccf120a499852959a1379deb25b9.png

5、jenkins配置

1)安全配置

jenkins默认的安全性是用户登陆后可以做任何事情,不是很安全,所以需要对非管理员账号做一些限制 进入全局安全配置

1、配置管理员权限 找到授权策略后,点击安全矩阵->add user,选择创建的admin账号,全选权限。86c0e3888f9c0138f8311b51bf735e0c.png4ba168d9039dacc659abca5b49cef46e.png98f25f65139b92f8559c68455db517b1.png

2、配置普通账号 目前没有普通的账号,需要新建一个账号,具体操作步骤:系统管理->管理用户->新建用户65a739aa253fc85ef12ad6de23fdc8f6.png24b0f9affe7a3286e1bef08433a55531.png给该账号取消掉管理员权限,此账号没有系统管理的权限d2203a8cdf31733a0ed2d2ce9c3c6346.png

2)全局工具配置

操作步骤:系统管理->全局工具配置 1、JDK配置 JAVA_HOM:/usr/lib/jvm/java-8-openjdk-amd6468cd032700b95316a2fdf86c6b9218fb.png不知道JDK安装在哪的可以通过以下命令查找

# 从环境变量PATH中,定位/返回与指定名字相匹配的可执行文件所在的路径
which java

9d398dc1407e8b4b2b85d0f45eabda0e.png

file /usr/bin/java

29d61df53ccb5d39399af592eb1f7062.png重复使用file命令,替换file后的输入内容为最新结果,最后可以找到安装目录838b21afc0ee31647c973a94480a5ab2.png

2、maven配置1a7e23b5f05e2b098d35caf272f8feb3.png

三、创建构建任务

1、git配置

在创建任务之前需要配置一下git或者其他代码管理仓库,确保服务器能够拉取到代码,这里我使用的是gitee 这里不详细展开说明,自行百度或参考:https://blog.csdn.net/liyanpig/article/details/105879263

2、创建maven项目

来到jenkins首页,点击左上角或下图所示地方创建任务51b69e164426bfdf999cef8f6771186e.pngjenkins可以创建多种类型的任务,这里以maven任务举例说明。如果你的任务类型不存在下图选中的任务类型,那就是没有下载Maven Integration plugin插件

377658a317338973ad4bb2bb4c6dd322.png选择源码管理->Git,输入项目gitee地址,初次使用时会报如下错误6b74e8f6c83f7323eb4f5896760a2ce6.png添加凭证,点击上图添加,输入gitee的账号密码后点击添加即可,然后选择刚刚添加的凭据,就不会报错了08da65d6f9f30f0468cf155ccc2cc4bd.png6a0809a3f8b0683f192e5ed2a0b5e4a4.pngAdditional Behaviours(可选),填写目录名,选择后任务会生成一个子目录,便于管理0e240bc89481cc6ae4cc40ef85afddbc.png在Build处新增maven命令clean install,然后点击保存->立即构建,执行任务09cf0ef4ad17e428b8266d0e83a118b4.png86f83169e7a0a0d28567b22b0aea5965.png可以点击此处查看构建日志4af58cdfda1ce44d78628168c52d0806.png可以看到输出success,表明任务执行成功c980680c1a9eaa9e923793edd50b5f69.png可以发现服务器中生成了jar包a44ab843e9c8a830dd642850f5a2c5ac.png

3、执行shell命令

jenkins不光可以进行编译等操作,在任务执行过程中还可以执行shell命令,帮助我们更好的完成自动化部署操作,选择刚刚创建的任务,进行配置,选择执行shell,如下图所示f80b8c480486a905748f617ef93e3d17.png我们可以在maven编译完成后执行shell命令将jar包scp到应用服务器,具体shell命令如下所示: 这里注释了jar包的启动脚本命令,测试时可以简单使用java -jar替代

# Jenkins执行脚本:
#####
pwd=$JOB_NAME;
appName=${pwd##*-};
jarName="${appName}-1.0-SNAPSHOT";
export LANG=zh_CN.UTF-8
ssh lilei@192.168.179.132 "mkdir -p /home/lilei/service/$JOB_NAME";
scp -r $WORKSPACE/target/*.jar lilei@192.168.179.132:/home/lilei/service/$JOB_NAME;
ssh lilei@192.168.179.132 "/home/lilei/service/$JOB_NAME/start.sh";

上述命令执行成功的前提是jenkins服务器与应用服务器之间实现了免密登陆,否则会失败。以上脚本其实可以使用publish-over-ssh插件使用,功能更加丰富强大,可惜暂停发布了,感兴趣的可以自行探索

4、参数化构建

上述任务构建时基于mater分支,不能够灵活的切换分支。可以通过设置参数化构建过程动态设置每一次任务执行时的分支。前提条件:安装git parameter插件

在任务配置中勾选参数化构建过程,选择git参数98431aa250333463f7a66b2e617ffc0a.png名称:branch,类型:分支2deca092a5e31773d42fe6365f2f4abb.png修改源码管理中的指定分支为${branch}5e2dbc51e1b2333768a98af9484cd1ca.png点击build with parameters可以看到项目的所有分支,选择某个分支就可以构建任务了20745b900972265d6d180410a7ce8152.png

四、多节点构建

业务量变大时,单台的jenkins进行自动化构建部署,就显得没那么灵活,jenkins的集群无需在额外的主机安装jenkins。

1、创建节点

创建节点之前先将节点服务器添加到known_hosts文件中。可以直接通过ssh命令在部署jenkins的服务器中登陆节点服务器,登陆成功就会将节点服务器添加到known_hosts文件中。5f9c080af5fc2495395a6fa243d8c685.png

-- 生成ssh秘钥
ssh-keygen -t rsa

如果没有进行上一步,会报如下错误9fb8033393f46cb3ca1a48c1d027d3c1.png新建节点be31c9f400447bf47cbbca68e5c05257.png添加凭据,这里用户名和密码填写节点服务器的779cca916100b6f3742aff8b06b70706.png82cc42221d4eef355e1ae5a753dd35d2.png新建节点成功后,点击节点启动,成功后如下图所示3bc9d762e6f9047b5c9c129348a787e2.png23618ce3029b2235068f3861a2b66b06.png

2、选择节点

任务构建可以指定节点进行,具体操作步骤如下图所示bde41a9f2d1d6bd8557c2317c3b62a29.png这里的值可以是节点的名称,也可以是节点标签,一个标签对应1个或多个节点。节点的标签在节点创建的时候设置

总结

总体上来说,安装Jenkins部署环境还是比较简单的,在安装过程中遇到一些问题也能找到解决方案。通过实际操作,进行Jenkins安装,更加全面的认识和深入了解Jenkins的使用,也对自动化构建有了进一步的掌握,在后续的工作中,可以在实际项目中进行使用,让其发挥威力,提升工作效率。

资料

Jenkins中文网 :http://www.jenkins.org.cn/
用Jenkins自动化搭建测试环境:https://www.imooc.com/learn/1008

推荐阅读

Intellij IDEA 牛X插件!工作效率提升10倍!

如何保证RocketMQ/RabbitMQ消息数据100%不丢失

e07d71dedc47ced9ba8fd0c88aa1aac6.gif

一个人看起来在进行逻辑思考,但其实大多数时间他只是在进行记忆检索。

2dd01aa65133d4e4672505832d9155eb.png

See you next good day~
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐