首页 > 其他 > 详细

自动发布项目(支持部署,回退功能)

时间:2021-03-07 15:08:55      阅读:32      评论:0      收藏:0      [点我收藏+]
Jenkins 自动发布项目
1.自动发布项目架构图
技术分享图片

2.自动发布项目思路

1.手动搭建nginx集群架构
2.开发提交代码至gitlab、手动拉取代码,并推送至web服务器群组
3.将手动操作编写至shell脚本,由Jenkins调取,并推送至web服务器组
 
3.编写上线脚本,将代码推送至web服务器组
1.配置Jenkins构建发布脚本 例如下面的auto_web_update.sh脚本
[root@localhost ~]# mkdir /data/sh -p
[root@localhost ~]# cd /data/sh/
[root@localhost sh]# touch auto_web_update.sh
[root@localhost sh]# vim auto_web_update.sh 
#!/bin/bash
DATE=$(date +%Y-%m-%d-%H-%s)
web_server="192.168.1.100 192.168.1.200"
Sdir=/opt
Ddir=/code
Hdir=/usr/local/nginx/html

#1.进入gitlab项目目录,将内容进行打包
get_code(){
        #cd /root/.jenkins/workspace/freestyle && \
        #${WORKSPACE_TMP} 变量是 工作区附近的临时目录,该目录不可浏览并且不会干扰SCM检出。最初可能不存在,所以请确保根据需要创建目录(例如,mkdir -p在Linux上)。当常规工作空间是驱动器根目录时,未定义。
        tar czf $Sdir/web-${DATE}.tar.gz ./*
        cd ${WORKSPACE_TMP} && \        
}

#2.将内容通过scp拷贝至web集群组 (提前做好免密钥)
scp_web_server(){
for i in $web_server
do
        scp -r /$Sdir/web-${DATE}.tar.gz root@$i:/root/
        ssh root@$i "mkdir -p $Dsir/web-${DATE} &&                      tar xf $Sdir/web-${DATE}.tar.gz -C $Dir/web-${DATE}
                     rm -rf $Hdir/web &&                      ln -s $Dir/web-${DATE} $Hdir/web"
done
}


deploy(){
        get_code
        scp_web_server
}
        deploy

[root@localhost sh]# chmod +x /data/sh/auto_web_update.sh 
[root@localhost sh]# ll 
total 4
-rwxr-xr-x. 1 root root 647 Dec 11 10:16 auto_web_update.sh

技术分享图片

  立即构建-自动触发脚本

技术分享图片

4.Jenkins实现版本发布

1.为什么要让项目支持tag版本方式上线?
由于之前上线方式是直接获取最新代码,那么会造成后期回退变的困难。
那如果采用tag方式,比如第一次上线v1.1、第二次上线v1.2、如果上线v1.2出现问题,那么我们可以快速回退至上一个版本v1.1。
 
2.实现tag版本上线方式思路
1.开发如果需要发布新版本,必须将当前的把呢不能打赏一个标签。
2.Jenkins需要让其支持传参,比如用户传递v1.1则拉取项目的v1.1标签
 
3.实战Jenkins部署tag版本
1.首先安装Git Parameter插件,然后配置Jenkins参数化构建,让用户在构建时选择对应的tag版本。

技术分享图片

 

技术分享图片

 技术分享图片

技术分享图片

技术分享图片

手动搭建一套集群环境?然后实现代码的上线?
Jenkins 构建 项目?html php(如果是php需要重新php服务,html不用)
脚本优化流程思路:
1.上线问题(脚本粗糙)
[root@localhost sh]# vim auto_web_update.sh 
#!/bin/bash
DATE=$(date +%Y-%m-%d-%H-%s)
web_server="192.168.1.100 192.168.1.200"
Sdir=/opt
Ddir=/code
Hdir=/usr/local/nginx/html

#1.进入gitlab项目目录,将内容进行打包
get_code(){
        #cd /root/.jenkins/workspace/freestyle && \
        #${WORKSPACE_TMP} 变量是 工作区附近的临时目录,该目录不可浏览并且不会干扰SCM检出。最初可能不存在,所以请确保根据需要创建目录(例如,mkdir -p在Linux上)。当常规工作空间是驱动器根目录时,未定义。
        tar czf $Sdir/web-${DATE}.tar.gz ./*
        cd ${WORKSPACE_TMP} && \        
}

#2.将内容通过scp拷贝至web集群组 (提前做好免密钥)
scp_web_server(){
for i in $web_server
do
        scp -r /$Sdir/web-${DATE}.tar.gz root@$i:/root/
        ssh root@$i "mkdir -p $Dsir/web-${DATE} &&                      tar xf $Sdir/web-${DATE}.tar.gz -C $Dir/web-${DATE}
                     rm -rf $Hdir/web &&                      ln -s $Dir/web-${DATE} $Hdir/web"
done
}


deploy(){
        get_code
        scp_web_server
}
        deploy
2.优化shell脚本,让其支持传参 git tag(gitlab仓库 需要打tag号)

 

自动发布项目(支持部署,回退功能)

原文:https://www.cnblogs.com/fengyuanfei/p/14494378.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!