一. 前言
在《Jenkins的简介、安装、配置》一文中,我们简单介绍了Jenkins的作用和功能,并在服务器中安装部署了Jenkins,接下来,我们将通过一个实战项目,用Jenkins自动化部署一个SpringBoot项目,流程如下:
通过IDEA提交到本地Git仓库并Push到GitHub或者Gitee后,Jenkins将会自动帮我们结束之前的项目进程,并自动从GitHub或者Gitee中拉取最新的项目部署到指定服务器上。
也就是说,之前需要我们手动用Maven打包、上传到服务器、杀掉之前的进程、启动现在的项目等这一系列操作全部交由Jenkins自动完成,我们需要做的就是将要部署的代码提交到GitHub或者Gitee,只要提交成功,Jenkins就会帮我们自动部署。
二. 全局工具配置
1. 我们点击左侧菜单中的的系统管理 —> 全局配置
2. 由于JDK我们已经提前安装了,所以这里取消自动安装,直接输入jdk的路径,
3. 同理,我们也可以先安装好Git后,再直接输入git的安装路径(如果忘记了git的安装路径,可以用which git 命令查询),如下图:
4. 除此之外,如果我们还没有安装相关软件,也可以选择让Jenkins自动安装,以Maven为例,如下图
5. 当然,如果在这之前,你的服务器已经安装了Maven和Git,也可以直接取消自动安装,输入安装路径即可,除此之外,我们还需要安装Maven插件,点击左侧菜单栏中的系统管理-> 插件管理,选择可选插件,搜索maven,选择 Maven Integration plugin,点击直接安装即可。
6. 用同样的方法分别安装GitHub Authentication、Git plugin、Gitee插件(可以自由选择安装,安装后配置Gitee更方便),由于在国内还是Gitee更稳定一些,所以接下来的讲解会以Gitee为例。
7. 打开左侧菜单中的系统管理 -> 系统设置 ,找到Gitee一栏,输入以下信息:
链接名:Gitee
Gitee 域名 URL:https://gitee.com
Gitee 域名完整URL地址:类型选择Gitee API 令牌,在登录码云情况下,在该浏览器上打开https://gitee.com/profile/personal_access_tokens,新增令牌[1]
三. 新建任务
1. 点击左侧的新建任务按钮,输入任务名称,点击确定
2. 输入该任务的简介,也可以直接空着进行下一步,在Gitee链接一栏,会自动选择我们上面配置的Gitee
3. 设置Repository URL 和Credentials,
Repository URL就是我们的git仓库的地址
4. 输入地址后可以看到有错误提示无法连接仓库,需要我们在Credentials中添加我们的Gitee账号和密码,点击上图中的添加 -> Jenkins ,在弹出的窗口中输入我们的账号和密码,ID是我们的唯一标识。
5. 如果你的账号、密码、仓库地址均正确,则错误提示消失:
6. 在配置构建器一栏中,我们勾选 “Build whenever a SNAPSHOT dependency is built” 和 “Gitee webhook 触发构建,需要在 Gitee webhook 中填写 URL: http://XXXXX ” 两个选项。(注意,这个URL的内容等会我们需要用到)
7. 还是在配置构建起这一栏中,我们点击生成按钮,会自动生成一串密码,我们将生成的密码和上一步勾选的URL的http://XXXXX 这两个内容,复制到我们的项目的WebHook中,并点击添加。WWebHook在我们每次 push 代码后,都会给远程 HTTP URL 发送一个 POST 请求 ,我们可以通过这个请求告诉Jenkins代码需要部署了。
添加后,可以点击测试按钮可以进行测试,点击查看更多按钮可以查看结果
如果状态码是200,则说明添加成功
8. 在Build一栏中输入以下内容:
Root POM:pom.xml
Goals and options:clean install -DskipTests
其中-DskipTests 代表忽略Test构建
9. 在Post Steps一栏中,选择执行Xshell,并输入以下内容[2]:
#!/bin/bash #export BUILD_ID=dontKillMe这一句很重要,这样指定了,项目启动之后才不会被Jenkins杀掉。 export BUILD_ID=dontKillMe # 防止rm 时候参数变量为空 cd /tmp/ #最终打包安装的jar包库路径,包括了依赖其他快照jar包(依赖的jar应该不需要删除) #mvn_jar_path=/mvn/libspace/com/middol/ #指定最后编译好的jar存放的位置,需要换成你自己的地址 www_path=/www/wwwroot/jenkins #Jenkins中编译好的jar位置,需要换成你自己的地址 jar_path=/root/.jenkins/workspace/ProjectName/target #先进入target目录 cd /root/.jenkins/workspace/Test/target #获取Jenkins中编译好的jar名称,其中XXX为你的pom文件中的artifactId的值,这一步主要是为了根据项目版本号动态获取项目文件名 jar_name=`ls |grep XXX-|grep -v original` #获取运行编译好的进程ID,便于我们在重新部署项目的时候先杀掉以前的进程,需要换成你自己的地址,并建好run.pid文件 #注意,如果你的服务器有多个项目,要保证每个项目的run.pid文件地址不一样,否则会杀掉其他项目的进程 pid=$(cat /root/.jenkins/workspace/ProjectName/run.pid) #杀掉以前可能启动的项目进程 kill -9 ${pid} #先进入mvn打包安装的路径删除依赖包 cd ${mvn_jar_path} #先删除原来的jar文件,主要目的是删除依赖的快照包(依赖的jar应该不需要删除) #rm -rf /mvn/libspace/com/middol/* #进入最后指定存放jar的位置 cd ${www_path} #先删除原来的jar文件 rm -rf ./${jar_name} #进入指定的编译好的jar的位置 cd ${jar_path} #将编译好的jar复制到最后指定的位置 cp ${jar_path}/${jar_name} ${www_path} #进入最后指定存放jar的位置 cd ${www_path} #启动jar,指定SpringBoot的profiles为dev,后台启动 nohup java -jar ${jar_name} >/dev/null 2>&1 & echo haha #将进程ID存入到run.pid文件中,需要换成你自己的地址 echo $! > /root/.jenkins/workspace/ProjectName/run.pid
10. 点击保存并应用,系统会自动回到项目空间主页面,我们点击立即构建,即可构建成功,项目也会自动启动并执行
三. 配置SSH
由于我直接将Jenkins部署到了Test这个项目所在的服务器中,所以在之前的步骤中,没有配置SSH,但假如Jenkins安装到了本地,或者Jenkins和Test不在同一个服务器中,则我们需要配置SSH,将打包的文件通过ssh上传
1. 安装Publish Over SSH插件,安装方法和前面类似,这里不再赘述
2. 点击左侧菜单系统管理 -> 系统配置 -> Publish over SSH,由于之前已经将SSH密码登录禁用,并修改成用证书登录,(修改教程请查看本站《如何将服务器SSH验证方式修改为数字证书登录》一文),所以这里配置ssh的时候,也需要通过证书的方式连接。需要注意的是,之前我们的服务器中只存放了私钥文件,而公钥是在本地的,我们将私钥复制一份,并将本地的公钥内容复制出来,添加在私钥的内容后面。接下来在Passphrase中输入公钥的访问密码,Path to key中输入刚刚新建的密钥地址,然后点击新增按钮,输入ip地址、用户名和name相关信息
3. 配置好ssh后,点击左侧菜单中我的视图 ,点击项目名称,选择配置
4. 点击构建后的操作模块,选择Send build artifacts over SSH,并进行配置。
Name:选择我们上面配置的SSH,
Source files : 项目打包后的jar地址
Remove prefix :将Source files的值去掉.jar的值
Remote directory:jar包在构建后的地址
Exec command:构建后要执行的脚本地址
5. 接下来点击应用,重新构建就可以了。
四. 其他相关
我们还可以给Jenkins添加邮件配置,用于每次构建后,通知我们构建结果,这里不再赘述,可以查看以下教程:
https://www.cnblogs.com/imyalost/p/8781759.html
请登录之后再进行评论