Jenkins结合码云自动化部署Springboot项目
一.准备工作(有的话,可以忽略)
1. 安装wget
如果需要通过使用wget命令,直接通过网络下载maven安装包时,需要在linux系统中安装wget命令。
yum -y install wget
2. 安装jdk
cd/usr/local
jdk-8u121-linux-x64.tar.gz #准备好的jdk包
tar -zxvf jdk-8u121-linux-x64.tar.gz
vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
source /etc/profile #让文件立即生效
java -version #查看配置是否成功
3. 安装maven
cd/usr/local
wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.6.1-bin.tar.gz
tar -zxvf apache-maven-3.6.1-bin.tar.gz
vim /etc/profile
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin
source /etc/profile #让文件立即生效
mvn –v #查看是否配置成功
4. 安装git
yum -y install git
二.开始部署 (jenkins的安装与使用)
1.安装jenkins
# yum源
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
# 公钥
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# 安装
yum install jenkins
注:用yum源如若报错出现
ERROR: cannot verify pkg.jenkins.io’s certificate, issued by ‘/C=US/O=Let’s Encrypt/CN=R3’:Issued certificate has expired. 时可用以下命令sudo yum install -y ca-certificates
2.更改系统文件
vi /etc/sysconfig/jenkins
JENKINS_USER="root" # 改成需要的用户名,默认为jenkins,这里改成root
JENKINS_PORT="8080" # 端口改成需要的端口,默认8080
cd /var/lib
chown -R root:root jenkins
systemctl restart jenkins # 重启jenkins服务
3.浏览器访问ip:8080得到登录界面,根据提示进入文件夹,查看密钥,完成后,需要插件安装,选择推荐插件安装。并创建你的Jenkins用户
cat /var/lib/jenkins/secrets/initialAdminPassword
4.进入jenkins界面
4.1下载所需插件 (系统管理->插件管理->可选插件)
新增下面三个插件
Gitee
Maven Integration
Pipeline Maven Integration
4.2全局配置(系统管理->全局工具配置)
JDK
Git
5.正式构建任务(回到主页面,新建任务)
5.1)构建一个自由风格的软件项目
5.2)General参数配置:
创建三个文本(英文为This project is parameterized选项),参数分别为jarPath(jar包的位置)projectName(项目的名称)jarName(jar包的名称)
5.3) 源码管理:
源码的url为码云代码仓库的HTTP链接,Credentials为代码仓库的人员码云的账号和密码
5.4) 配置webhook
注: 通过Gitee的webhook实现推送时部署,码云的仓库需要有(管理员)权限
根据上图的信息,配置webHook,使项目码云的仓库与jenkins关联
请求为200,即为连接成功
5.5)构建自动化脚本(执行shell):
将启动的shell脚本和停止的shell脚本,写到服务器的文件夹中
cd /root
mkdir shell
cd shell/ #写到/root/shell下
vi start.sh #将下面启动的shell脚本黏贴到vim中
:wq #保存,并退出
vi stop.sh #将下面停止的shell脚本黏贴到vim中
:wq #保存,并退出
点击增加构建步骤,选择执行shell,再将构建的脚本写到jenkins的构建环境中。
配置完成后,就可以开始构建了
出现下面表示构建成功!,在码云的此仓库中,一旦有人push,就会自动化部署项目
三.需要的脚本
构建的shell脚本:
#!/bin/bash -il
mvn clean install -Dmaven.test.skip=true
echo $jarPath $jarName
cd /root/shell/
./stop.sh $jarName
echo "Execute shell Finish"
./start.sh $jarPath $jarName $projectName
启动的脚本:
jarPath=${1}
jarName=${2}
projectName=${3}
cd ${jarPath}/${projectName}/target/
echo ${jarPath}/${projectName}/target/
echo nohup java -jar ${jarName} &
BUILD_ID=dontKillMe nohup java -jar ${jarName} > /root/workspace/boot.log &
停止的脚本:
jarName=${1}
echo "Stopping" ${jarName}
pid=`ps -ef | grep ${jarName} | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
echo "kill -9 的pid:" $pid
kill -9 $pid
fi
四.总结:
逻辑:利用webhook使码云和jenkins工具连接,每次更新项目推送到码云仓库时,jenkins会进行捕捉,捕捉到,就会按照编写好的shell脚本进行自动化部署。
一些操作中可能用到的linux命令
1. 停止服务并yum卸载
service jenkins stop
yum clean all
yum -y remove jenkins
2. rpm卸载
rpm -e jenkins
3. 检查是否卸载成功
rpm -ql jenkins
4. 彻底删除残留文件:
find / -iname jenkins | xargs -n 1000 rm -rf
# find命令用来查找“/”下名称符合jenkins的文件
# -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
# xargs 命令 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
# -n 选项 每次传递几个参数给其后面的命令执行