美文网首页
自动化部署

自动化部署

作者: _Gaara_ | 来源:发表于2020-08-13 09:31 被阅读0次

个人使用的自动化脚本部署,配合自己的Dockerfile使用

#!/usr/bin/env bash
ProjectName=$1;
Port=$2;
if [ ! $ProjectName ]; then
echo "ProjectName IS NULL !"
exit
fi
if [ ! $Port ]; then
echo "Port IS NULL !"
exit
fi
echo '[INFO] ------------------------------------------------------------------------';
echo '
 ######      ###       ###    ########     ###    
##    ##    ## ##     ## ##   ##     ##   ## ##   
##         ##   ##   ##   ##  ##     ##  ##   ##  
##   #### ##     ## ##     ## ########  ##     ## 
##    ##  ######### ######### ##   ##   ######### 
##    ##  ##     ## ##     ## ##    ##  ##     ## 
 ######   ##     ## ##     ## ##     ## ##     ## 
';
echo '[INFO] ------------------------------------------------------------------------';
echo '[info] ------------------  cd /gaara/Code'/$ProjectName/ ' --------------------';
cd /gaara/Code/$ProjectName/;
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  git pull origin '$ProjectName'  --------------------';
git pull origin $ProjectName;
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  mvn clean package  ---------------------------------';
mvn clean package;
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  clean package success!!!  --------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  create the jar to docker  --------------------------';
echo '[INFO] ------------------------------------------------------------------------';
mv /gaara/Code/$ProjectName/target/*.jar  /gaara/docker/root.jar;
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  Delete invalid target/*  ---------------------------';
rm -rf /gaara/Code/$ProjectName/target;
echo '[INFO] ------------------  Delete success -------------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  Get the version ------------------------------------';
version=$(cat /gaara/version/Version-$ProjectName)
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  Get the version '${version}
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  Stop the container ---------------------------------';
docker stop $ProjectName;
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  success    -----------------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  Deletet the container  -----------------------------';
docker rm $ProjectName;
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  success    -----------------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  Deletet the Images   -------------------------------';
echo '[INFO] ------------------  cp the Dockerfile to here --------------------------';
cd /gaara/docker;
cp /gaara/Code/Dockerfile ./;
echo '[INFO] ------------------  input  Dockerfile success --------------------------';
docker rmi $ProjectName:V${version};
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  success    -----------------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  Version ++   ---------------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo "${version} + 0.1"|bc > /gaara/version/Version-$ProjectName;
version=$(cat /gaara/version/Version-$ProjectName)
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  success   new Version : '${version}
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  Build   the Images   -------------------------------';
docker build -t $ProjectName:V${version} . > build.txt;
cat build.txt;
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------ Build success    ------------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  Get the docker id ----------------------------------';
awk '{res = cur; cur = $(NF) } END{ print res }' build.txt > cache;
dockerID=$(cat cache);
echo '[INFO] ------------------------------------------------------------------------';
echo '[info] Build the container success, the imageId='$dockerID
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------ Delete the file--------------------------------------';
rm -rf /gaara/docker/cache;
rm -rf /gaara/docker/root.jar;
rm -rf /gaara/docker/build.txt;
rm -rf /gaara/docker/Dockerfile;
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------  success    -----------------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------ Run the container -----------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
docker run -dit --name $ProjectName -p $Port:8443 $ProjectName:V${version}
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo '[INFO] ------------------------------------------------------------------------';
echo '[info] The package build successfully';
echo '[INFO] ------------------------------------------------------------------------';
docker logs -f $ProjectName;

相关文章

网友评论

      本文标题:自动化部署

      本文链接:https://www.haomeiwen.com/subject/nhgedktx.html