Jenkins+Maven+Gitee自动化部署Springboot项目

文章目录

        • CICD介绍
          • 持续集成(CI)
          • 持续交付、持续部署(CD)
        • Git安装
        • JDK安装
        • Maven安装
        • Jenkins安装
        • 启动Jenkins
        • 常用插件安装
          • 修改源
          • 插件安装
        • 基础配置
          • jdk配置
          • Git配置
          • Maven配置
          • 凭据配置
          • 对接码云Gitee
        • Springboot小项目发布
          • 引入服务器规划
          • 配置SSH免密登录
          • 创建任务
          • 自动启停项目

CICD介绍

CICD可以理解为管道,一个自动化流程,用于实现应用开发中的高度持续自动化和持续监控

持续集成(CI)

CI指持续集成,它属于开发人员的自动化流程,成功的CI说明新的代码会定期或手动构建、测试并合并到共享存储库中,可以有效解决由于分支过多而导致相互冲突的问题

持续交付、持续部署(CD)

CD指持续交付、持续部署,持续交付指开发人员将代码变更后会自动进行测试然后上传到共享存储库,然后由运维部署到生产环境中;持续部署指自动将变更的代码从共享存储库发布到生产环境。二者通常交叉使用,也可以单独使用,主要取决于自动化程度

工厂里的生产线以快速、可重复、自动化的方式将原材料生产为消费品,软件交付也是同样的道理,而如何完成这项工作的总体设计就是持续交付(CD),启动生产线的过程就是持续集成(CI),将最终产品提供给客户的过程就是持续部署(CD)

Git安装

执行安装命令

yum install git -y

验证Git,查看版本

git --version

请添加图片描述

JDK安装

执行命令java -version,查看系统是否已安装并配置jdk,若未安装请点击此处查看文章JDK安装步骤

Jenkins+Maven+Gitee自动化部署Springboot项目_第1张图片

Maven安装

在线安装:通过华为源下载

wget https://repo.huaweicloud.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

Jenkins+Maven+Gitee自动化部署Springboot项目_第2张图片

离线安装:点击此处进入官方下载页面,或者在国内源下载

Jenkins+Maven+Gitee自动化部署Springboot项目_第3张图片

将下载包上传到系统中,然后进行配置

解压下载包

tar -zxvf apache-maven-3.6.3-bin.tar.gz

Jenkins+Maven+Gitee自动化部署Springboot项目_第4张图片

编辑vim /etc/profile文件,添加Maven环境变量

export MAVEN_HOME=maven路径
export PATH=$MAVEN_HOME/bin:$PATH

请添加图片描述

重新加载配置,执行命令. /etc/profile

验证Maven配置,执行命令mvn -version

Jenkins+Maven+Gitee自动化部署Springboot项目_第5张图片

创建一个目录,做为Maven仓库,并修改为华为源

mkdir apache-maven-3.6.3/repository
vim apache-maven-3.6.3/conf/settings.xml

修改以下信息

<!--本地仓库-->          
 <localRepository>apache-maven-3.6.3/repository</localRepository>

<!--华为源-->
<mirror>
    <id>huaweicloud</id>
    <mirrorOf>*</mirrorOf>
    <url>https://repo.huaweicloud.com/repository/maven/</url>
</mirror>

Jenkins+Maven+Gitee自动化部署Springboot项目_第6张图片
Jenkins+Maven+Gitee自动化部署Springboot项目_第7张图片

Jenkins安装

在线安装:由于网络限制,建议使用国内镜像站下载

wget https://repo.huaweicloud.com/jenkins/war/版本/jenkins.war

Jenkins+Maven+Gitee自动化部署Springboot项目_第8张图片

离线安装:点击此处进入官方下载页面,建议下载LTS长期支持版,复制链接地址使用迅雷等工具进行下载

Jenkins+Maven+Gitee自动化部署Springboot项目_第9张图片

将下载的war包上传到系统中

Jenkins+Maven+Gitee自动化部署Springboot项目_第10张图片

启动Jenkins

nohup java -jar jenkins.war --httpPort=8888 > jenkins.log 2>&1 &

使用tail -f jenkins.log命令查看输出日志,获取Jenkins密码并记录Jenkins密钥

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

d9ad78c6be5345b4837194ea91d934b0

This may also be found at: /root/.jenkins/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

开放端口供外网访问,或者直接关闭防火墙

# 开启防火墙8888端口
firewall-cmd --zone=public --add-port=8888/tcp --permanent
# 关闭防火墙并禁止开机自启
systemctl stop firewalld && systemctl disable firewalld

浏览器访问地址http://192.168.107.132:8888/,耐心等待进入以下页面,然后输入日志中复制的密码

Jenkins+Maven+Gitee自动化部署Springboot项目_第11张图片
Jenkins+Maven+Gitee自动化部署Springboot项目_第12张图片
Jenkins+Maven+Gitee自动化部署Springboot项目_第13张图片
Jenkins+Maven+Gitee自动化部署Springboot项目_第14张图片

然后点击【保存并完成】→【开始使用Jenkins】,进入Jenkins欢迎页面

Jenkins+Maven+Gitee自动化部署Springboot项目_第15张图片

常用插件安装

修改源

由于是国外网址,插件下载太慢,所以先更换一下安装源

依次点击【Maanage Jenkins】→【Manage Plugins】→【Advanced】,划到最下面修改升级站点URL

https://repo.huaweicloud.com/jenkins/updates/update-center.json

Jenkins+Maven+Gitee自动化部署Springboot项目_第16张图片

修改服务器配置,先找到Jenkins的安装目录,因其是隐藏目录,可以通过查找命令find / -name ".jenkins"找到安装路径,编辑updates目录下default.json文件

Jenkins+Maven+Gitee自动化部署Springboot项目_第17张图片

先切换到updates目录下,然后执行修改文件的命令

cd /root/.jenkins/updates/
sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/repo.huaweicloud.com\/jenkins/g' default.json
sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

请添加图片描述

重启Jenkins,直接通过浏览器访问地址重启

http://192.168.107.132:8888/restart

Jenkins+Maven+Gitee自动化部署Springboot项目_第18张图片

插件安装

在安装时选择推荐插件,已经把常用的插件安装成功,可以在已安装列表中查看

Jenkins+Maven+Gitee自动化部署Springboot项目_第19张图片

未安装的插件在【可选插件】中搜索,然后勾选要安装的插件,点击【直接安装】

例如:SonarQube Scanner插件,安装后可以执行 sonar scanner 指令,跑 CI 时检查代码质量

Jenkins+Maven+Gitee自动化部署Springboot项目_第20张图片

点击【直接安装】后会进入安装页面,在此页面勾选“安装完成后重启Jenkins(空闲时)”,如果页面长时间等待,可能已成功安装,请手动刷新页面

Jenkins+Maven+Gitee自动化部署Springboot项目_第21张图片

基础配置

jdk配置

依次点击【Manage Jenkins】→【Global Tool Configuration】,找到JDK,点击【新增JDK】

Jenkins+Maven+Gitee自动化部署Springboot项目_第22张图片

出现黄色提示说明配置有问题,路径有误,Jenkins未找到

Jenkins+Maven+Gitee自动化部署Springboot项目_第23张图片

Git配置

在【Global Tool Configuration】页面找到Git,默认已经填写,可以重命名操作

Jenkins+Maven+Gitee自动化部署Springboot项目_第24张图片

出现下图提示说明配置有误

Jenkins+Maven+Gitee自动化部署Springboot项目_第25张图片

Maven配置

在【Global Tool Configuration】页面找到Maven

Jenkins+Maven+Gitee自动化部署Springboot项目_第26张图片

同样下图提示说明路径有误

Jenkins+Maven+Gitee自动化部署Springboot项目_第27张图片

最后点击【保存】

凭据配置

依次点击【Manage Jenkins】→【Manage Credentials】,点击【全局】→【添加凭据】,或者进入全局详情页添加凭据

Jenkins+Maven+Gitee自动化部署Springboot项目_第28张图片
Jenkins+Maven+Gitee自动化部署Springboot项目_第29张图片

  • 常用凭据类型

    Username with password:用户名和密码

    SSH Username with private key:使用SSH用户和密钥

下面以使用Git工具到码云拉取项目源码为例,演示Jenkins的如何管理码云的凭证

对接码云Gitee

添加码云Gitee凭据

Jenkins+Maven+Gitee自动化部署Springboot项目_第30张图片
Jenkins+Maven+Gitee自动化部署Springboot项目_第31张图片

新建一个码云仓库

Jenkins+Maven+Gitee自动化部署Springboot项目_第32张图片

此仓库内有两个README文件,复制仓库地址

Jenkins+Maven+Gitee自动化部署Springboot项目_第33张图片

然后测试凭据是否能正常使用

【新建Item】→【Freestyle project】,输入任务名称,点击【确定】

Jenkins+Maven+Gitee自动化部署Springboot项目_第34张图片

找到源码管理,点击Git,URL中输入复制的仓库地址,Credentials选择已添加的码云凭据

Jenkins+Maven+Gitee自动化部署Springboot项目_第35张图片

因为仓库是私有的,所以必须要有凭据,否则无法连接到仓库,就会报错

Jenkins+Maven+Gitee自动化部署Springboot项目_第36张图片

保存任务,点击【Build Now】,立即构建,查看构建日志

Jenkins+Maven+Gitee自动化部署Springboot项目_第37张图片

通过日志输出结果可以看出构建成功

Jenkins+Maven+Gitee自动化部署Springboot项目_第38张图片

查看Jenkins的工作空间目录可以看到已成功将文件拉取下来

Jenkins+Maven+Gitee自动化部署Springboot项目_第39张图片

至此说明用户名和密码类型的凭证已经生效

Springboot小项目发布

引入服务器规划

由于Jenkins构建消耗内存很大,此处再创建一个虚拟机,有条件可以直接开通阿里云的ECS,就更像公司的部署情况啦!哈哈

应用服务器信息

  • IP:192.168.107.133
  • JDK:1.8 (安装步骤请查看此文章)
  • 部署路径:/project/backup/dyd-jenkins-test/
  • 端口:8088
配置SSH免密登录

在Jenkins服务器上生成密钥

ssh-keygen -t rsa
# 然后直接回车三次

执行后会生成.ssh目录,生成两个文件

  • id_rsa : 生成的私钥文件
  • id_rsa.pub : 生成的公钥文件

Jenkins+Maven+Gitee自动化部署Springboot项目_第40张图片

接下来需要将公钥导入到认证文件中

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

Jenkins+Maven+Gitee自动化部署Springboot项目_第41张图片

ssh公钥生效需满足至少下面两个条件:

  • .ssh目录的权限必须是700
  • .ssh/authorized_keys文件权限必须是600

给文件授权

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys

请添加图片描述

将authorized_keys文件拷贝到应用服务器192.168.107.133的.ssh目录下

# 先在应用服务器(192.168.107.133)上创建/.ssh目录
mkdir /root/.ssh
# 在jenkins服务器(192.168.107.132)上将pub公钥文件拷贝到应用服务器的.ssh目录下,并命名为authorized_keys
scp -p /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys

请添加图片描述
Jenkins+Maven+Gitee自动化部署Springboot项目_第42张图片

然后再给应用服务器192.168.107.133上的.ssh和.ssh/authorized_keys授权

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys

请添加图片描述

在Jenkins服务器192.168.107.132上进行免密连接测试

# 在jenkins服务器的任意目录下创建test文件,并拷贝到应用服务器
touch /root/test
scp -p test [email protected]:/root/test
# 进入到应用服务器(192.168.107.133),检查目录下是否出现test
# 在Jenkins服务器上使用ssh进行免密连接测试,成功连接如下图所示,如果还需要输入密码,说明配置失败,请检查
ssh [email protected]
# 验证后使用exit退出远程连接
exit

请添加图片描述

至此免密登录和实现免密拷贝成功

创建任务

先使用脚手架写一个超简单的小项目,或者网上找个项目
Jenkins+Maven+Gitee自动化部署Springboot项目_第43张图片
先确保本地能够成功访问
Jenkins+Maven+Gitee自动化部署Springboot项目_第44张图片

然后通过Git将小项目上传到码云
Jenkins+Maven+Gitee自动化部署Springboot项目_第45张图片

创建一个Maven项目,若不存在此选项,请在插件中搜索maven,然后安装Maven
Jenkins+Maven+Gitee自动化部署Springboot项目_第46张图片

配置Git,填写码云上复制的项目地址和码云凭据
Jenkins+Maven+Gitee自动化部署Springboot项目_第47张图片

配置Pro Steps,POM默认已存在,无需更改,操作填写clean package -U -Dmaven.test.skip=true
Jenkins+Maven+Gitee自动化部署Springboot项目_第48张图片

配置Post Stops,选择执行Shell
Jenkins+Maven+Gitee自动化部署Springboot项目_第49张图片

编写Jenkins发布脚本

#!/bin/bash

echo "部署的目录和项目名称"
DIR="/project"
projectName="dyd-jenkins-test"

echo "待部署的应用服务器"
server_ips="192.168.107.133"
for server_ip in ${server_ips[@]}
do

echo "ssh连接并进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <

将脚本代码粘贴到Execute shell框中,然后点击【应用】【保存】
Jenkins+Maven+Gitee自动化部署Springboot项目_第50张图片

执行构建任务
点击【Build Now】,立即构建,查看控制台输出,首次构建有下载任务,构建时间可能会很长,请耐心等待
请添加图片描述
Jenkins+Maven+Gitee自动化部署Springboot项目_第51张图片
Jenkins+Maven+Gitee自动化部署Springboot项目_第52张图片

构建成功后启动项目
Jenkins+Maven+Gitee自动化部署Springboot项目_第53张图片

通过浏览器访问验证项目,可以看到项目已成功启动
Jenkins+Maven+Gitee自动化部署Springboot项目_第54张图片

自动启停项目

通过上面操作可以看到任务构建成功后,每次还需要手动启停,所以需要一些自动启停的shell脚本

编写应用启动脚本

在/project/backup/dyd-jenkins-test目录下创建启动脚本

vim start.sh

将下面的代码粘贴到start.sh文件中

#!/bin/bash
set -e #一旦报错立即停止
set -o pipefail

# 添加JDK路径
JAVA_HOME=/usr/java/jdk1.8.0_281-amd64

APP_ID=dyd-jenkins-test
APP_DIR="/project"

nohup $JAVA_HOME/bin/java -jar ${APP_DIR}/backup/${APP_ID}/${APP_ID}.jar > release_out.log 2>&1 &
start_ok=false
if [[ $? = 0 ]];then
        sleep 5
        tail -n 100 release_out.log
fi
dyd=`grep "Started" release_out.log | awk '{print $1}'`
if [[ -n "${dyd}" ]];then
    echo "应用程序启动成功"
    exit 0
else
    echo "应用程序启动失败"
    exit 1
fi

运行脚本看是否能够成功启动应用

# 切换到项目目录下
cd /project/backup/dyd-jenkins-test
# 执行shell命令
sh start.sh
# 或者执行命令时直接加上路径
sh /project/backup/dyd-jenkins-test/start.sh
# 然后查看日志
tail -f release_out.log

Jenkins+Maven+Gitee自动化部署Springboot项目_第55张图片

通过浏览器访问成功

Jenkins+Maven+Gitee自动化部署Springboot项目_第56张图片

编写停止应用脚本

在/project/dyd-jenkins-test目录下创建停止脚本

vim stop.sh

将下面的代码粘贴到stop.sh文件中

#!/bin/bash

APP_ID=dyd-jenkins-test
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

运行脚本看是否能够成功停止应用运行

# 切换到项目目录下
cd /project/backup/dyd-jenkins-test
# 执行shell命令
sh stop.sh
# 或者执行命令时直接加上路径
sh /project/backup/dyd-jenkins-test/stopt.sh

请添加图片描述

通过浏览器访问失败
Jenkins+Maven+Gitee自动化部署Springboot项目_第57张图片

启停脚本验证通过后,将下述启停代码加到上面Jenkins的发布脚本中

sh $DIR/backup/${projectName}/stop.sh
sh $DIR/backup/${projectName}/start.sh

Jenkins+Maven+Gitee自动化部署Springboot项目_第58张图片

构建任务,查看控制台输出日志可以项目启动成功
Jenkins+Maven+Gitee自动化部署Springboot项目_第59张图片

项目变更后重新构建发布
先修改一下小项目,然后同步到码云
Jenkins+Maven+Gitee自动化部署Springboot项目_第60张图片

Jenkins+Maven+Gitee自动化部署Springboot项目_第61张图片

再次构建项目
日志中可以看到commit信息,并构建发布成功
Jenkins+Maven+Gitee自动化部署Springboot项目_第62张图片
Jenkins+Maven+Gitee自动化部署Springboot项目_第63张图片

通过浏览器访问可以看到最新的信息啦
Jenkins+Maven+Gitee自动化部署Springboot项目_第64张图片

你可能感兴趣的:(jenkins,maven,gitee)