基于GitLab自动化部署脚本
一、maven项目脚本 .gitlab-ci.ymlstages:- build- test- deploybefore_script:- source /etc/environment- export PATH=${PATH}:${JAVA_HOME}/bin:${M2_HOME}/bindeploy_dev:stage: buildscript:- mvn clean package -Pd
·
一、maven项目脚本
.gitlab-ci.yml
stages:
- build
- test
- deploy
before_script:
- source /etc/environment
- export PATH=${PATH}:${JAVA_HOME}/bin:${M2_HOME}/bin
deploy_dev:
stage: build
script:
- mvn clean package -Pdevelop -Dmaven.test.skip=true
- scp ./trade-core/target/trade_core.war webapp@127.0.0.1:/tmp/wars
- sleep 30
- scp ./trade-oms/target/trade.war webapp@127.0.0.1:/tmp/wars #传输
# - sleep 30
# - ssh webapp@127.0.0.1 "sh -c /home/webapp/sh/start_app_trade_core.sh" # 执行服务器上的部署项目脚本
# - sleep 20
# - ssh webapp@127.0.0.1 "sh -c /home/webapp/sh/start_app_trade.sh" # 执行服务器上的部署项目脚本
- echo "只打包,不发布,执行完成~"
only:
- develop # gitlab分支
tags:
- dev # gitlab runner Tag
deploy_test:
stage: build
script:
- mvn clean package -Ptest -Dmaven.test.skip=true
- scp ./trade-oms/target/trade.war webapp@127.0.0.1:/tmp/wars
- sleep 10
- scp ./trade-core/target/trade_core.war webapp@127.0.0.1:/tmp/wars
- sleep 10
- ssh webapp@127.0.0.1 "sh -c '/home/webapp/sh/start_app.sh trade_core'" # 执行服务器上的部署项目脚本
- ssh webapp@127.0.0.1 "sh -c '/home/webapp/sh/start_app.sh trade'" # 执行服务器上的部署项目脚本
#- ssh webapp@127.0.0.1 "sh -c /home/webapp/sh/start_app_batch_core.sh" # 执行服务器上的部署项目脚本
#- ssh webapp@127.0.0.1 "sh -c /home/webapp/sh/start_app_batch.sh" # 执行服务器上的部署项目脚本
- echo "打包,发布,执行完成~"
only:
- test # gitlab分支
tags:
- test # gitlab runner Tag
deploy_prd:
stage: build
script:
- mvn clean package -Pprd -Dmaven.test.skip=true # 打包
- echo "只打包不发布.............."
- scp ./trade-oms/target/trade.war app@127.0.0.1:/tmp/wars # 将war包拷贝到服务器上
- echo "sleep 60s to start next step"
- sleep 60
- scp ./trade-core/target/trade_core.war app@127.0.0.1:/tmp/wars # 将war包拷贝到服务器上
- echo "sleep 60s to start next step"
- sleep 60
- scp ./trade-oms/target/trade.war app@127.0.0.1:/tmp/wars # 将war包拷贝到服务器上
- echo "sleep 60s to start next step"
- sleep 60
- scp ./trade-core/target/trade_core.war app@127.0.0.1:/tmp/wars # 将war包拷贝到服务器上
#- ssh webapp@127.0.0.1 "sh -c /app/sh/start_app_trade_core.sh" # 执行服务器上的部署项目脚本
#- ssh webapp@127.0.0.1 "sh -c /app/sh/start_app_trade.sh" # 执行服务器上的部署项目脚本
#- ssh webapp@127.0.0.1 "sh -c /app/sh/start_app_trade_core.sh" # 执行服务器上的部署项目脚本
#- ssh webapp@127.0.0.1 "sh -c /app/sh/start_app_trade.sh" # 执行服务器上的部署项目脚本
- echo "执行完成 ~ :"
only:
- prd # gitlab分支
tags:
- prod # gitlab runner Tag
一、Linux脚本
start_app.sh
#!/bin/bash
PROJECT_NAME_trade_oms=trade
PROJECT_NAME_trade_core=trade_core
PROJECT_NAME_batch_oms=batch
PROJECT_NAME_batch_core=batch_core
PROJECT_NAME_acc_core=acc_core
PROJECT_NAME_acc_oms=acc
PROJECT_NAME_credit_core=credit_core
PROJECT_NAME_credit_oms=credit
PROJECT_NAME_cas_core=cas_core
PROJECT_NAME_cas_oms=cas
service=$1
temp="/tmp/wars"
backupappdir="/home/webapp/backup_wars"
sufiex=`date "+%Y-%m-%d"`
echo $service
if [[ $service = "trade" ]]; then
PROJECT_NAME=$PROJECT_NAME_trade_oms
tomcatdir="/home/webapp/tomcat/trade-oms-8081"
appname="trade-oms-8081"
warname="trade.war"
elif [[ $service = "trade_core" ]]; then
PROJECT_NAME=$PROJECT_NAME_trade_core
tomcatdir="/home/webapp/tomcat/trade-core-8080"
appname="trade-core-8080"
warname="trade_core.war"
elif [[ $service = "batch" ]]; then
PROJECT_NAME=$PROJECT_NAME_batch_oms
tomcatdir="/home/webapp/tomcat/batch-oms-8071"
appname="batch-oms-8071"
warname="batch.war"
elif [[ $service = "batch_core" ]]; then
PROJECT_NAME=$PROJECT_NAME_batch_core
tomcatdir="/home/webapp/tomcat/batch-core-8070"
appname="batch-core-8070"
warname="batch_core.war"
elif [[ $service = "acc" ]]; then
PROJECT_NAME=$PROJECT_NAME_acc_oms
tomcatdir="/home/webapp/tomcat/acc-oms-8091"
appname="acc-oms-8091"
warname="acc.war"
elif [[ $service = "acc_core" ]]; then
PROJECT_NAME=$PROJECT_NAME_acc_core
tomcatdir="/home/webapp/tomcat/acc-core-8090"
appname="acc-core-8090"
warname="acc_core.war"
elif [[ $service = "credit_core" ]]; then
PROJECT_NAME=$PROJECT_NAME_credit_core
tomcatdir="/home/webapp/tomcat/credit-core-8085"
appname="credit-core-8085"
warname="credit_core.war"
elif [[ $service = "credit_core" ]]; then
PROJECT_NAME=$PROJECT_NAME_credit_oms
tomcatdir="/home/webapp/tomcat/credit-oms-8087"
appname="credit-oms-8087"
warname="credit.war"
elif [[ $service = "cas_core" ]]; then
PROJECT_NAME=$PROJECT_NAME_cas_core
tomcatdir="/home/webapp/tomcat/cas-core-8088"
appname="cas-core-8088"
warname="cas_core.war"
elif [[ $service = "cas" ]]; then
PROJECT_NAME=$PROJECT_NAME_account_oms
tomcatdir="/home/webapp/tomcat/cas-oms-8089"
appname="cas-oms-8089"
warname="cas.war"
else
echo '没有对应的工程'
exit 0
fi
pid=`ps -ef|grep ${appname} | grep -v "grep"| awk -F ' ' '{print $2}'`
if [ ! -n "$pid" ]; then
echo "is null"
else
echo $pid
#kill -9 $pid
kill $pid
pid=`ps -ef|grep ${appname} | grep -v "grep"| awk -F ' ' '{print $2}'`
wait=0;
while [ "$pid" != "" ];do
sleep 1
((wait++));
pid=`ps -ef|grep ${appname} | grep -v "grep"| awk -F ' ' '{print $2}'`
if [ "$wait" -eq 30 ] && [ "$pid" != "" ];then
echo "超过最大停机时间$wait秒,强制kill"
kill -9 $pid
break;
fi
echo "正在优雅停机第$wait秒,请稍后"
done
fi
cd ${tomcatdir}/webapps
cp $warname $backupappdir/${appname}.${sufiex}.war
rm -rf $PROJECT_NAME
rm $warname
rm -rf ${tomcatdir}/logs/catalina.out
cp $temp/$warname ${tomcatdir}/webapps/$warname
${tomcatdir}/bin/startup.sh
三、过滤提交脚本
.gitignore
######################
# Eclipse
######################
*.pydevproject
.project
.metadata
/bin/**
/tmp/**
/tmp/**/*
*.tmp
*.lck
*.epoch
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/**
.loadpath
/src/main/resources/rebel.xml
# External tool builders
.externalToolBuilders/**
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# PDT-specific
.buildpath
######################
# Intellij
######################
.idea/**
*.iml
*.iws
*.ipr
*.ids
*.orig
.idea/
######################
# Maven
.mvn/
######################
logs/
target/
######################
# Gradle
######################
.gradle/**
######################
# Package Files
######################
*.jar
*.war
*.ear
*.db
######################
# Windows
######################
# Windows image file caches
Thumbs.db
# Folder config file
Desktop.ini
######################
# Mac OSX
######################
.DS_Store
.svn
# Thumbnails
._*
# Files that might appear on external disk
.Spotlight-V100
.Trashes
######################
# Directories
######################
/build/**
/bin/**
/spring_loaded/**
/deploy/**
######################
# Logs
######################
*.log
######################
# Others
######################
*.class
*.*~
*~
.merge_file*
更多推荐




所有评论(0)