Jenkins+GitHub 项目搭建配置
项目发布脚本
profilesScript.sh (支持不同环境配置文件)
- #!/bin/bash
- ACTIVE=$1
- JENKINS_PATH=/var/lib/jenkins/workspace
- APP_NAME=sb-system
- APP_PATH=$JENKINS_PATH/$APP_NAME/sb-base/src/main/resources
- if [ -d $APP_PATH ]; then
- echo "${APP_PATH}"
- else
- echo "${APP_NAME} is not exist"
- fi
- cd $APP_PATH
- if [ $ACTIVE ]; then
- ACTIVE_PROFILES=application-${ACTIVE}.YAML
- else
- echo "use default profiles"
- exit
- fi
- if [ -f ${ACTIVE_PROFILES} ]; then
- echo "${ACTIVE_PROFILES} is active"
- mv -f $ACTIVE_PROFILES application.YAML
- else
- echo "${ACTIVE_PROFILES} is not exist use default profiles application.yml"
- fi
- echo "active profiles is ${ACTIVE_PROFILES} ."
- exit
- View Code
- subscipt.sh (支持版本参数)
- #!/bin/bash
- # 版本号例如: 1.0.0
- version=$1
- # 备份时间版本
- date=`date +%Y%m%d%H%M%S`
- #App jar 基本路径
- APPBASE_PATH=/usr/local/jar
- #App jar 备份路径
- APPBACKUP_PATH=$APPBASE_PATH/backup
- #App jar 路径
- APP_PATH=$APPBASE_PATH/wapps
- #jar 包名称 例如: sb-base-1.0.0-SNAPSHOT.jar
- APP_NAME=sb-base-${
- version
- }-SNAPSHOT.jar
- # jenkins 路径
- JENKINS_PATH=/var/lib/jenkins/workspace
- # jenkins 编译好的 jar
- APP_CLASS_PATH=$JENKINS_PATH/sb-system/sb-base/target/$APP_NAME
- # 判断程序是否已启动 未启动返回 1 启动放回 0
- is_exist(){
- pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
- if [ -z $pid ]; then
- return 1
- else
- return 0
- fi
- }
- is_exist
- if [ $? -eq "0" ]; then
- echo "${APP_NAME} is restart..."
- echo "kill pid ${pid}"
- kill -s 9 $pid
- else
- echo "${APP_NAME} is not running"
- fi
- # 等待 2 秒 jenkins 编译项目
- sleep 2
- # 复制编译好的 jar 包
- cp -f $APP_CLASS_PATH $APPBASE_PATH/
- ########### 备份 ############
- cd $APP_PATH
- if [ -e ${
- APP_NAME
- } ]; then
- mv -f ${
- APP_NAME
- } $APPBACKUP_PATH/${
- APP_NAME%%.*
- }-${
- date
- }.jar
- echo "${APP_NAME} 备份成功"
- else
- echo "${APP_NAME} is first deploy"
- fi
- ##########jar 移到 wapps############
- cd $APPBASE_PATH
- mv -f ${
- APP_NAME
- } $APP_PATH
- ######### 判断并且赋予执行权限 #################
- cd $APP_PATH
- if [ -e $APP_NAME ]; then
- chmod +x *.jar
- else
- echo "${APP_NAME} is not exist"
- exit
- fi
- ######### 启动 jar 包 ##############
- is_exist
- if [ $? -eq "0" ]; then
- echo "${APP_NAME} is already running. pid=${pid} ."
- else
- echo "程序开始启动..."
- echo "start jar path ${APP_PATH}/${APP_NAME}"
- nohup java -Dcom.sun.akuma.Daemon=daemonized -Dhudson.util.ProcessTree.disable=true -DAPP_HOME=$APP_PATH -jar $APP_PATH/$APP_NAME --daemon>$APPBASE_PATH/wapps-subscibe.log 2>&1 &
- echo "程序已启动..."
- fi
- # 等待 1 秒 检测是否已经启动成功
- sleep 1
- is_exist
- if [ $? -eq "0" ]; then
- echo "${APP_NAME} is running. pid is ${pid}"
- else
- echo "${APP_NAME} is not running start app is fail ."
- fi
- exit
- View Code
项目是 Spring Boot Jenkins 会构建好了会 Kill 所有的子进程 所以要注意 jar 启动的参数
nohup java -Dcom.sun.akuma.Daemon=daemonized -Dhudson.util.ProcessTree.disable=true -DAPP_HOME=/usr/local/jar/wapps -jar /usr/local/jar/wapps/sb-base-1.0.0-SNAPSHOT.jar --daemon>/usr/local/jar/wapps-subscibe.log 2>&1 &
来源: http://www.bubuko.com/infodetail-3130278.html