上篇文章给大家介绍了Maven编译的内容,讲解了用Jenkins如何去集成Maven,这篇文章给大家介绍另一个的Maven项目,实现gitlab提交代码后,自动进行Maven编译,自动推送至web主机进行代码上线的效果。
文章目录
- 一、主机介绍
- 二、在Web主机部署Tomcat和数据库
- 三、部署war包,简单展示Web页面
- 四、新建Gitlab项目并推送代码
- 五、配置Jenkins
- 六、编写脚本
- 七、测试Maven项目上线全流程
一、主机介绍
主机名 | IP |
---|---|
Web01 | 10.0.0.7 |
Jenkins | 10.0.0.201 |
二、在Web主机部署Tomcat和数据库
1、安装JDK
rz jdk-8u181-linux-x64.rpm
rpm -ivh jdk-8u181-linux-x64.rpm
2、安装Tomcat
rz apache-tomcat-8.0.27.tar.gz
tar zvxf apache-tomcat-8.0.27.tar.gz
mv /application/apache-tomcat-8.0.27 /usr/local/tomcat
3、修改Tomcat配置提升启动速度
vim /usr/java/jdk1.8.0_181-amd64/jre/lib/security/java.security
第117行修改为 securerandom.source=file:/dev/urandom
4、启动Tomcat
/usr/local/tomcat/bin/startup.sh
5、安装数据库
yum -y install mariadb
systemctl start mariadb.service
mysql_secure_installation
mysqladmin -uroot password 'root'
mysql -uroot -proot -e 'create database jeesns;'
# 下面我把jeesns的代码包放到web服务器了,正常情况下,如果代码在jenkins服务器,可以scp把sql文件拷贝过来,再执行sql
rz jeesns.tar.gz
tar xf jeesns.tar.gz -C /opt/
mysql -uroot -p1 jeesns < /opt/jeesns/jeesns-web/database/jeesns.sql
三、部署war包,简单展示Web页面
jeesns.tar.gz 下载链接放到文末了
[root@Jenkins ~]# tar xf jeesns.tar.gz -C /opt/
[root@Jenkins ~]# cd /opt/jeesns/
[root@Jenkins jeesns]# mvn clean
[root@Jenkins jeesns]# mvn package
[root@Jenkins jeesns]# scp target/jeesns-web.war 10.0.0.7:/usr/local/tomcat/webapps/ROOT
[root@Jenkins jeesns-web]# ssh 10.0.0.7 'cd /usr/local/tomcat/webapps/ROOT && unzip jeesns-web.war && /usr/local/tomcat/bin/shutdown.sh && /usr/local/tomcat/bin/startup.sh '
等tomcat完全启动后,浏览器访问10.0.0.7的端口,就可以访问到了
四、新建Gitlab项目并推送代码
记录此处的镜像源,一会儿要在Jenkins里面用
按照指令提示执行这两个部分的命令
[root@Gitlab ~]# git config --global user.name "Administrator"
[root@Gitlab ~]# git config --global user.email "admin@example.com"
[root@Gitlab ~]# cd /data/jeesns/
[root@Gitlab jeesns]# git remote rename origin old-origin
[root@Gitlab jeesns]# git remote add origin git@10.0.0.200:root/JEESNS.git
[root@Gitlab jeesns]# git push -u origin --all
[root@Gitlab jeesns]# git push -u origin --tags
刷新浏览器可以看到上传的代码
五、配置Jenkins
1、新建Maven项目并进行配置
配置丢弃旧的构建
配置参数化构建
配置镜像源,此处报红色错误,可能是需要做jenkins到gitlab服务器的免密钥,配置通过版本号拉取代码
配置构建触发器
填写master,配置推送请求的规则,只有包含master字样的名称才会推送,点击Generate生成秘钥,将此秘钥记录下来
添加clean package指令,和执行指定位置的构建脚本的构建步骤
最终点击保存,点击保存后,将刚刚自动构建的秘钥复制到gitlab
六、编写脚本
在Jenkins中构建步骤指定的位置编写脚本。
[root@Jenkins ~]# cat /server/scripts/maven_JEESNS.sh
#!/bin/sh
DATE=$(date +%Y-%m-%d-%H-%M-%S)
CODE_DIR="/var/lib/jenkins/workspace/JEESNS"
WEB_DIR="/usr/local/tomcat/webapps"
get_code_scp(){
ssh 10.0.0.7 "cd $WEB_DIR && mkdir java-${git_version}"
cd $CODE_DIR && scp jeesns-web/target/*.war 10.0.0.7:$WEB_DIR/java-${git_version}
}
code_tarxf(){
ssh 10.0.0.7 "cd $WEB_DIR/java-${git_version} && unzip *.war && rm -rf *.war"
}
ln_html(){
ssh 10.0.0.7 "cd $WEB_DIR/ && rm -rf ROOT && ln -s java-${git_version} ROOT && /usr/local/tomcat/bin/shutdown.sh && /usr/local/tomcat/bin/startup.sh"
}
main(){
get_code_scp;
code_tarxf;
ln_html;
}
if [ "$deploy_env" == "deploy" ];then
if [ "$GIT_COMMIT" == "$GIT_PREVIOUS_SUCCESSFUL_COMMIT" ];then
echo "构建失败该 $git_version 版本号已部署"
else
main
fi
elif [ "$deploy_env" == "rollback" ];then
ln_html
fi
七、测试Maven项目上线全流程
1、修改代码
[root@Gitlab jeesns]# vim jeesns-web/src/main/webapp/WEB-INF/templates/front/index.ftl
...
<div class="panel-heading">
推荐阅读v1.0
</div>
...
2、推送代码
[root@Gitlab jeesns]# git add .
[root@Gitlab jeesns]# git commit -m "v1.0"
[root@Gitlab jeesns]# git tag -a v1.0 -m "v1.0"
[root@Gitlab jeesns]# git push -u origin v1.0
3、Jenkins选择版本部署
可以看到构建成功(因为马虎失败了两次,所以序号显示3)
4、查看v1.0部署效果并再次修改代码,推送代码,用Jenkins部署新版本
[root@Gitlab jeesns]# vim jeesns-web/src/main/webapp/WEB-INF/templates/front/index.ftl
...
<div class="panel-heading">
推荐阅读v2.0
</div>
...
[root@Gitlab jeesns]# git add .
[root@Gitlab jeesns]# git commit -m "v2.0"
[root@Gitlab jeesns]# git tag -a v2.0 -m "v2.0"
[root@Gitlab jeesns]# git push -u origin v2.0
5、查看v2.0部署效果,并回滚v1.0查看效果
v2.0更改成功!
回滚的话是比较快的,不用去拉取代码,其实没有deploy和rollback的选项也可以,可以根据代码仓库与现有版本的版本号的大小去判断是部署还是回滚,除非是部署之前的版本,然后之前的版本也需要去代码仓库拉取代码,这种情况应该很少。
可以在此处查看
也可以在web后端服务器查看
[root@Web01 webapps]# ll
total 4
drwxr-x--- 16 root root 4096 Jun 30 10:44 docs
drwxr-x--- 7 root root 99 Jun 30 10:44 examples
drwxr-x--- 6 root root 79 Jun 30 10:44 host-manager
drwxr-xr-x 5 root root 126 Sep 28 15:40 java-v1.0
drwxr-xr-x 5 root root 104 Sep 28 15:50 java-v2.0
drwxr-x--- 6 root root 114 Jun 30 10:44 manager
lrwxrwxrwx 1 root root 9 Sep 28 15:57 ROOT -> java-v1.0
也可以在页面上查看效果,就是tomcat重启太慢了,页面效果要等好久
也可以做个通知机制,企业微信给开发通知,等等吧,方式很多。
Maven项目练手代码下载链接:https://pan.baidu.com/s/1ifkGhh34uxhoTqmhf7e1lg?pwd=8464
我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!