认识大管家 Jenkins(二)部署 SpringBoot 项目
================================================================
本文将介绍使用 Jenkins 来部署 SpringBoot 项目的过程,项目保存在 Github 中,能通过 Jenkins 实现提交代码后项目自动拉取代码,自动构建,自动部署。
========================================================================
Jenkins 的配置文件在 /etc/sysconfig/jenkins
注意下面的配置并非必须,看个人需求。
修改 Jenkins 的用户为 root,这样会拥有更大的访问权限,方便使用
![](https://static001.geekbang.org/infoq/3c/3c62017ed344a90af07c7133f7a4f2bc.png)
修改了端口,默认的 8080 端口,容易出现冲突
![](https://static001.geekbang.org/infoq/4d/4d644dc440fe0b6d0a73af9d1571c099.png)
========================================================================
介绍下 Jenkins 目录,在构建脚本中用得到
Jenkins 的主目录在 /var/lib/jenkins 中
主要的几个目录:
jobs
创建的任务目录
logs
存放日志
nodes
部署节点
plugins
插件目录
secrets
密钥目录
workspace
项目构建的工作空间
==================================================================
点击 Manage Jenkins > Mange Plugins
![](https://static001.geekbang.org/infoq/5a/5a4c48cb14a57ac8e211070f80ba082c.png)
在可选插件中搜索插件,安装后重新 Jenkins 就可以了
![](https://static001.geekbang.org/infoq/29/295e6d9a847cbac117697becc34d08c0.png)
需要安装 Git 和 Maven Integration plugin 插件
![](https://static001.geekbang.org/infoq/cd/cd8a509300bee08210b664ec49329ec5.png)
![](https://static001.geekbang.org/infoq/7c/7c9cc0adfafd56bc3861bdc28abf5968.png)
=======================================================================
1) 进入到 Github 的项目仓库中,在 settings 中的 Webhooks 添加 Webhook
![](https://static001.geekbang.org/infoq/2e/2e003d34bbe58123bd936ffa8a73e509.png)
2) 配置如下
Payload URL 中前面的 IP 和端口就是 Jenkins 的地址
![](https://static001.geekbang.org/infoq/1a/1aa4d5339884601de4a8ad6c48b75cbe.png)
3)添加凭据
在 Gibhub 的个人配置中,点击开发者配置
![](https://static001.geekbang.org/infoq/f1/f1dd0c1b94acb2c53c4f9146e7e07743.png)
添加一个 token
![](https://static001.geekbang.org/infoq/33/3366a0d8c4484e3ed3a71396d45ed7d2.png)
勾选下面的权限
![](https://static001.geekbang.org/infoq/d6/d628300987fbcc7d864e852d3afb7835.png)
把生成的秘钥 Copy 下来,后面需要
![](https://static001.geekbang.org/infoq/5e/5e0deff4056b5809f77ca5b8ad85d6a0.png)
====================================================================
1) 新建一个 Maven 项目
![](https://static001.geekbang.org/infoq/c5/c56ddd271f1d0eeebb5af73f0087b81a.png)
2) 添加项目的描述,可以选择丢弃旧的构建,以节约磁盘空间
![](https://static001.geekbang.org/infoq/47/4730769beb4edae0afdb116de5bb8eea.png)
3) 源码管理里添加 Git 仓库地址
项目部署时,会从 git 拉取最新的代码
![](https://static001.geekbang.org/infoq/d9/d9c69015cda8f1139ecd9cd1bce9d8d0.png)
4) 然后 Credentials 里面添加凭据,这里是 Github 的账号、密码
![](https://static001.geekbang.org/infoq/25/257dc675280b7dcbb3943946f406a3d1.png)
5)构建触发器,第一个是构建快照版本后触发,第二个是提交代码后由 Webhook 触发
![](https://static001.geekbang.org/infoq/95/953f9245d53087f768b38ed5f5cc4cb6.png)
6)构建环境里面选择 Use secret text,点击 Secret Text,添加 Secret text 凭据
![](https://static001.geekbang.org/infoq/1c/1ca56b5a0182aec92d2d6942825142ba.png)
![](https://static001.geekbang.org/infoq/c9/c996766635c5d1f7726b390924900878.png)
把 GitHub 生成的秘钥填到这里
![](https://static001.geekbang.org/infoq/d1/d13203239ece2351d350d8266e17cd82.png)
7) Pre Steps
添加一行命令,跳过了测试
![](https://static001.geekbang.org/infoq/b6/b690a5587df6292182311f0042d33948.png)
8) Post Steps
输入 shell 脚本
![](https://static001.geekbang.org/infoq/aa/aaf8a4ed06e0d7d83ff92e21f8517f95.png)
这个 shell 脚本就是部署的重点了
注意:本文案例中 Jenkins 和部署项目都在同一台服务器上。
首先在服务器的/usr/local 下创建 jenkins/oa 目录作为部署项目的目录
#!/bin/bash
切换到部署目录
cd /usr/local/jenkins/oa
echo "Stopping SpringBoot Application"
查找到之前 jar 文件运行的 pid,干掉之前的进程
pid=ps -ef | grep oa-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'
if [ -n "$pid" ]
then
kill -9 $pid
fi
从 jenkins 的 workspace 中把刚生成的 jar 文件覆盖 oa 目录下原来的 jar 文件
mv /var/lib/jenkins/workspace/DeployOA/target/oa-0.0.1-SNAPSHOT.jar /usr/local/jenkins/oa/oa-0.0.1-SNAPSHOT.jar
评论