#!/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 (责任编辑:IT) |