jenkins+gitlab自动发布静态项目

流程图:

 

 通过这个粗糙的流程图可以看出构建流程,开发push代码到Gitlab,通过打tag触发web钩子构建任务,执行任务中的shell脚本,拉取代码,部署至服务器。通过Jenkins任务页面选项,也可以简单的进行部署、回滚操作。

二、Gitlab配置

从github上找了一个小项目练习克隆到本地, GitHub地址:https://github.com/mzlogin/dujitang

 

 

 配置webhook用于触发自动构建

 

 

 URL是jenkins中的任务地址,token是Jenkins自动生成的。后面会提及。测试 返回200说明连接没问题。

 

 三、Jenkins配置

 

 

 

 

 

 

 

 

 

 

 

点开高级  生成个token 就是Gitlab webhook中配置的

 

 

 

 脚本内容:

#!/bin/bash
datetime=`date +%Y%m%d-%H:%M`

workdir=/root/.jenkins/workspace/test/
#cd $workdir
#tar czf web-${datetime}.tar.gz ./*
webserver="k8s-node1 k8s-node2"
deploy(){
for host in ${webserver}
do
ssh root@${host} "mkdir -p /usr/share/nginx/${datetime}${git_version}"

scp -r ${workdir}/* root@${host}:/usr/share/nginx/${datetime}${git_version}

ssh root@${host} "rm -rf /usr/share/nginx/html && \
ln -s /usr/share/nginx/${datetime}${git_version} /usr/share/nginx/html
chmod -R 775 /usr/share/nginx/html/"
done
}

rollback(){
for host in ${webserver}
do
backfile=`ssh root@${host} "find /usr/share/nginx/ -maxdepth 1 -type d -name "*${git_version}""`
ssh root@${host} "rm -rf /usr/share/nginx/html && \
ln -s $backfile /usr/share/nginx/html && \
chmod -R 775 /usr/share/nginx/html/"
done
}

if [ ${deploy_env} == 'deploy' ];then
if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then
echo "您已经部署过该${git_version}版本"
exit 1
else
deploy
fi
elif [ ${deploy_env} == 'rollback' ];then
rollback
fi

四、测试

 

 现在修改一下代码 改成v6版本,打tag push到代码库

 

 

 

打完tag 已经触发自动构建了

 

 测试回退到V3版本看看

 

 

 

 

 

 

回退其实就是把链接重新指向之前的版本。。

 

posted @ 2021-06-11 17:07  心隐﹡  阅读(188)  评论(0)    收藏  举报