通过这个粗糙的流程图可以看出构建流程,开发push代码到Gitlab,通过打tag触发web钩子构建任务,执行任务中的shell脚本,拉取代码,部署至服务器。通过Jenkins任务页面选项,也可以简单的进行部署、回滚操作。
从github上找了一个小项目练习克隆到本地, GitHub地址:https://github.com/mzlogin/dujitang
配置webhook用于触发自动构建
URL是jenkins中的任务地址,token是Jenkins自动生成的。后面会提及。测试 返回200说明连接没问题。
点开高级 生成个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版本看看
回退其实就是把链接重新指向之前的版本。。
原文:https://www.cnblogs.com/kll-devops/p/14864488.html