基于 git、maven,通过 shell 脚本打包

#!/bin/bash

#初始化各类变量

HOME_DIR="/Users/zhaobo.lin/Documents/work/deploy"

 

# 参数处理

BRANCH_NAME=$1

GIT_URL=$2

TEMP_WAR=${GIT_URL##*/}

PROJECT_NAME=${TEMP_WAR%.*}

 

# 目录定义

PROJECT_BUILD_ROOT_DIR=$PROJECT_NAME"-build-root"

PROJECT_BUILD_GIT_DIR=$PROJECT_NAME

PROJECT_BUILD_LOG_DIR="log"

PROJECT_BUILD_WAR_DIR="war"

PROJECT_BUILD_INI_DIR="ini"

 

# 路径定义

PROJECT_BUILD_ROOT_PATH=$HOME_DIR/$PROJECT_BUILD_ROOT_DIR

PROJECT_BUILD_GIT_PATH=$HOME_DIR/$PROJECT_BUILD_ROOT_DIR/$PROJECT_BUILD_GIT_DIR

PROJECT_BUILD_LOG_PATH=$HOME_DIR/$PROJECT_BUILD_ROOT_DIR/$PROJECT_BUILD_LOG_DIR

PROJECT_BUILD_WAR_PATH=$HOME_DIR/$PROJECT_BUILD_ROOT_DIR/$PROJECT_BUILD_WAR_DIR

PROJECT_BUILD_INI_PATH=$HOME_DIR/$PROJECT_BUILD_ROOT_DIR/$PROJECT_BUILD_INI_DIR

 

# 打包日志路径

LOG_FILE_PATH=$PROJECT_BUILD_LOG_PATH/$PROJECT_NAME"-"$BRANCH_NAME"-build.log"

BUILD_VERSION_SERIAL_NUMBER_FILE=$PROJECT_BUILD_INI_PATH/$BRANCH_NAME".serial"

 

# 创建项目打包根路径

if [ ! -d $PROJECT_BUILD_ROOT_PATH ];

then

    mkdir $PROJECT_BUILD_ROOT_DIR

fi

 

if [ ! -d $PROJECT_BUILD_GIT_PATH ];

then

    git config --global credential.helper store

    if [ $# -ne 2 ]; then

       echo "usage:sudo ./auto_build.sh [branch] [gitUrl]"

       exit 0

    fi

    echo "克隆项目"$PROJECT_NAME"代码,git 地址:"$GIT_URL

    cd $PROJECT_BUILD_ROOT_PATH

    git clone -b $BRANCH_NAME $GIT_URL $PROJECT_BUILD_GIT_DIR

else

echo "项目"$PROJECT_NAME"代码目录已经存在,拉取更新指定版本代码……"

cd $PROJECT_BUILD_GIT_PATH

# TODO 切换 branch,并更新代码

git checkout -b $BRANCH_NAME origin/$BRANCH_NAME

git pull

fi

 

echo "创建项目打包日志目录……"

cd $PROJECT_BUILD_ROOT_PATH

if [ -d $PROJECT_BUILD_LOG_PATH ];

then

rm -rf $PROJECT_BUILD_LOG_DIR

fi

mkdir $PROJECT_BUILD_LOG_DIR

 

cd $PROJECT_BUILD_GIT_PATH

mvn clean install -Dmaven.test.skip=true | tee -a $LOG_FILE_PATH

 

if [ `grep -c 'BUILD SUCCESS' $LOG_FILE_PATH` -gt '0' ]; 

then

    echo "打包成功!"

else

    echo "打包失败!退出,请查看日志,日志路径"$LOG_FILE_PATH

    exit 0

fi

 

cd $PROJECT_BUILD_ROOT_PATH

 

# 创建项目打包配置文件目录

if [ ! -d $PROJECT_BUILD_INI_PATH ];

then

mkdir $PROJECT_BUILD_INI_DIR

fi

 

echo "读取指定版本的第四位版本号。"

# 创建项目打包版本第四位序列号文件

if [ ! -f $BUILD_VERSION_SERIAL_NUMBER_FILE ];

then

touch $BUILD_VERSION_SERIAL_NUMBER_FILE

fi

 

LAST_SERIAL_NUMBER=`tail -n 1 $BUILD_VERSION_SERIAL_NUMBER_FILE`

 

if [ ! $LAST_SERIAL_NUMBER ];

then

LAST_SERIAL_NUMBER="0"

else

if [[ $i =~ ^[0-9]*$ ]];

then

LAST_SERIAL_NUMBER=`expr $LAST_SERIAL_NUMBER + 1`

else

rm -f $BUILD_VERSION_SERIAL_NUMBER_FILE

LAST_SERIAL_NUMBER="0"

fi

fi

 

echo $LAST_SERIAL_NUMBER >> $BUILD_VERSION_SERIAL_NUMBER_FILE

 

# 创建项目包存储目录

if [ ! -d $PROJECT_BUILD_WAR_PATH ];

then

mkdir $PROJECT_BUILD_WAR_DIR

fi

 

cd $PROJECT_BUILD_WAR_PATH

VERSION_SERIAL_WAR_DIR=$BRANCH_NAME"."$LAST_SERIAL_NUMBER

if [ -d $PROJECT_BUILD_WAR_PATH/$VERSION_SERIAL_WAR_DIR ];

then

rm -rf $VERSION_SERIAL_WAR_DIR

fi

mkdir $VERSION_SERIAL_WAR_DIR

 

echo "拷贝包到项目包存储目录."

cp $PROJECT_BUILD_GIT_PATH/"target/"$PROJECT_NAME".war" $PROJECT_BUILD_WAR_PATH/$VERSION_SERIAL_WAR_DIR

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值