jenkins自动化构建,自动化部署,回滚具体配置如下:以测试环境xx服务为例进行配置
jenkins至少需要安装如下两个插件:
上面具体脚本如下:
case $Status in
Deploy)
cd /root/.jenkins/workspace/cart-service
/data/tools/maven3/bin/mvn clean package -f pom.xml -Drun.profiles=test -Dmaven.test.skip=true
cp -r /root/.jenkins/workspace/cart-service/cart-service/target/cart-service-1.0.jar /project/code/
kill -9 $(ps -ef|grep cart-service|grep -v grep|awk '{print $2}')
nohup /data/tools/jdk8/bin/java -jar -Dspring.profiles.active=dev /project/code/cart-service-1.0.jar >>/project/logs/cart-service.log 2>&1 &
echo "Status:$Status"
path="${WORKSPACE}/bak/${BUILD_NUMBER}" #创建每次要备份的目录
if [ -d $path ];
then
echo "The files is already exists "
else
mkdir -p $path
fi
cp -f ${WORKSPACE}/cart-service/target/cart-service-1.0.jar $path #将打包好的jar包备份到相应目录,覆盖已存在的目标
echo "Completing!"
;;
Rollback)
echo "Status:$Status"
echo "Version:$Version"
cd ${WORKSPACE}/bak/$Version #进入备份目录
cp -f cart-service-1.0.jar ${WORKSPACE}/cart-service/target/ #将备份拷贝到程序打包目录中,并覆盖之前的jar包
cp -r /root/.jenkins/workspace/cart-service/cart-service/target/cart-service-1.0.jar /project/code/
kill -9 $(ps -ef|grep cart-service|grep -v grep|awk '{print $2}')
nohup /data/tools/jdk8/bin/java -jar -Dspring.profiles.active=dev /project/code/cart-service-1.0.jar >>/project/logs/cart-service.log 2>&1 &
;;
*)
exit
;;
esac
上面具体脚本如下:
ReservedNum=5 #保留文件数
FileDir=${WORKSPACE}/bak/
date=$(date "+%Y%m%d-%H%M%S")
cd $FileDir #进入备份目录
FileNum=$(ls -l | grep '^d' | wc -l) #当前有几个文件夹,即几个备份
while(( $FileNum > $ReservedNum))
do
OldFile=$(ls -rt | head -1) #获取最旧的那个备份文件夹
echo $date "Delete File:"$OldFile
rm -rf $FileDir/$OldFile
let "FileNum--"
done
jenkins到此配置结束。
下面开始配置gitlab(自动化构建部署):
以dev分支下的xxx-service 服务(项目)为例进行具体配置:
点击setttings(设置)进行配置,选择settings下的集成进去配置,具体如下:
如上点击test,选中push那个,成功会返回200,如下,然后保存提交(修改)。
到此为止,jenkins自动化构建,自动化部署,回滚配置完成。