Jenkins-Maven

Jenkins-Maven

Deng YongJie's blog 270 2022-07-10

第1章 准备Maven环境

注意:下列操作都是在jenkins主机部署

1.安装maven

tar zxf apache-maven-3.3.9-bin.tar.gz -C /opt/
cd /opt/
ln -s apache-maven-3.3.9 maven

2.设置maven国内源

在mirror标签下添加mirror区块

vim /opt/maven/conf/settings.xml
 <mirror>
 <id>nexus-aliyun</id>
 <mirrorOf>*</mirrorOf>
 <name>Nexus aliyun</name>
 <url>http://maven.aliyun.com/nexus/content/groups/public</url>
 </mirror>

3.配置环境变量

echo 'export PATH=$PATH:/opt/maven/bin' >> /etc/profile
source /etc/profile
mvn -v

4.使⽤mvn打包测试项⽬

tar zxf hello-world-war.tar.gz
cd hello-world-war/
mvn package

5.检查是否⽣成war包

ll target

第2章 上传代码到gitlab

以下操作在gitlab服务器进⾏:

1.在gitlab中创建项⽬

2.在gitlab主机提交测试项⽬

tar zxf hello-world-war.tar.gz
cd hello-world-war/
git remote remove origin
git init
git remote add origin git@10.0.0.200:dev/java-helloworld.git
git add .
git commit -m "Install commit"
git push -u origin master

3.gitlab上查看项⽬

第3章 Jenkins配置Maven项⽬

1.配置Maven⽬录

进⼊Jenkins的系统管理–>全局⼯具配置⻚⾯–>Maven安装
image-1676454651616

2.新建Maven项⽬

image-1676454661212

3.gitlab项⽬⾥激活部署公钥

image-1676454677655

3.配置项⽬的gitlab地址

image-1676454691454

4.设置打包命令

image-1676454703557

5.测试构建是否成功

点击⽴即构建,然后查看jenkins的⼯作⽬录下是否成功⽣成了war包

[root@jenkins-201 ~]# ll /var/lib/jenkins/workspace/java-helloworld/target/
总⽤量 4
drwxr-xr-x 4 root root 54 8⽉ 7 08:13 hello-world-war-1.0.0
-rw-r--r-- 1 root root 2403 8⽉ 7 08:13 hello-world-war-1.0.0.war
drwxr-xr-x 2 root root 28 8⽉ 7 08:13 maven-archiver
[root@jenkins-201 ~]#

6.将war包发送给web服务器

cd /var/lib/jenkins/workspace/java-helloworld/target/
scp hello-world-war-1.0.0.war 10.0.0.7:/tmp/

第4章 安装部署Tomcat

注意:以下操作在web服务器进⾏

1.安装java环境

yum install java -y

2.安装Tomcat

tar xf apache-tomcat-8.0.27.tar.gzls -C /opt/
cd /opt
ln -s apache-tomcat-8.0.27 tomcat

3.拷⻉测试项⽬并⽤tomcat启动

rm -rf /opt/tomcat/webapps/*
cp /tmp/hello-world-war-1.0.0.war /opt/tomcat/webapps/ROOT.war
/opt/tomcat/bin/startup.sh

4.测试访问

4.清理环境

测试完成后我们将war包删掉,后续我们使⽤jenkins⾃动部署

rm -rf /opt/tomcat/webapps/ROOT.war

第5章 Jenkins配置参数化构建

1.编写发布脚本

cat > /scripts/jenkins/java_deploy.sh << 'EOF'
#!/bin/bash
PATH_CODE=/var/lib/jenkins/workspace
PATH_WEB=/opt/tomcat/webapps
IP=10.0.0.7
#拷⻉war包发送到web服务器代码⽬录
code_scp(){
 ssh ${IP} "mkdir ${PATH_WEB}/java-${git_version} -p"
 scp ${PATH_CODE}/java-helloworld/target/*.war ${IP}:${PATH_WEB}/java-
${git_version}
}
#web服务器解压代码
code_unzip(){
 ssh ${IP} "cd ${PATH_WEB}/java-${git_version} && unzip *.war && rm -rf
*.war"
}
#创建代码软链接
code_ln(){
 ssh ${IP} "cd ${PATH_WEB} && rm -rf ROOT && ln -s java-${git_version} ROOT"
}
#重启tomcat
restart_tomcat(){
 ssh ${IP} "cd /opt/tomcat/bin && ./shutdown.sh && ./startup.sh"
}
main(){
 code_scp
 code_unzip
 code_ln
}
#选择发布还是回滚
if [ "${deploy_env}" == "deploy" ]
then
 ssh ${IP} "ls ${PATH_WEB}/java-${git_version}" >/dev/null 2>&1
 if [ $? == 0 -a ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ]
 then
 echo "java-${git_version} 已部署,不允许重复构建"
 exit
 else
 main
 restart_tomcat
 fi
elif [ "${deploy_env}" == "rollback" ]
then
 code_ln
 restart_tomcat
fi
EOF

2.配置参数化构建

image-1676454803516

最后还需要配置⼀下git仓库地址,注意需要修改拉取的版本的变量为 $git_version
image-1676454813732

jenkins构建查看会发现已经有了选项,但是因为还没提交代码,所以版本号还没有:
image-1676454825025

3.配置构建后操作

image-1676454832957

4.项⽬打标签测试

删除以前的标签:

git tag
git tag -d v1.0 v2.0 v3.0 v4.0

发布v2.0版本

cd hello-world-war/src/main/webapp/
git checkout master
git pull
git checkout -b v2.0
vim src/main/webapp/index.jsp
git status
git add .
git commit -m "v2.0 稳定版"-
git push -u origin v2.0

发布v3.0版本

cd hello-world-war/src/main/webapp/
git checkout master
git pull
git checkout -b v3.0
vim src/main/webapp/index.jsp
git status
git add .
git commit -m "v3.0 稳定版"
git push -u origin v3.0

5.测试发版

发布v2.0版本:
image-1676454872615

web服务器查看:
image-1676454883549

⽬录查看:

[root@web-7 ~]# ll /opt/tomcat/webapps/
总⽤量 0
drwxr-xr-x 4 root root 54 8⽉ 7 09:26 java-v2.0
lrwxrwxrwx 1 root root 9 8⽉ 7 09:27 ROOT -> java-v2.0

测试发布v3.0版本:
image-1676454893449

浏览器查看:
image-1676454900403

代码⽬录查看

[root@web-7 ~]# ll /opt/tomcat/webapps/
总⽤量 0
drwxr-xr-x 4 root root 54 8⽉ 7 09:26 java-v2.0
drwxr-xr-x 4 root root 54 8⽉ 7 09:39 java-v3.0
lrwxrwxrwx 1 root root 9 8⽉ 7 09:39 ROOT -> java-v3.0

6.测试回滚

当前版本为v3.0,我们选择回滚到v2.0
image-1676454909192

web浏览器查看发现已经回滚成功了:
image-1676454917825

查看代码⽬录:

[root@web-7 ~]# ll /opt/tomcat/webapps/
总⽤量 0
drwxr-xr-x 4 root root 54 8⽉ 7 09:26 java-v2.0
drwxr-xr-x 4 root root 54 8⽉ 7 09:39 java-v3.0
lrwxrwxrwx 1 root root 9 8⽉ 7 09:41 ROOT -> java-v2.0

提示:

发布脚本可根据业务场景和需求,自定义修改流程。例如:自动更新k8s镜像、回滚镜像等操作