一、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*
Logo

一站式 AI 云服务平台

更多推荐