`

基于 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

 

分享到:
评论

相关推荐

    通过Shell脚本,结合Git实现增量部署基于Maven的Java项目.zip

    通过Shell脚本,结合Git实现增量部署基于Maven的Java项目

    shell-tomcat-git-maven:使用Shell 脚本,部署Tomcat

    shell-tomcat-git-maven使用Shell 脚本,部署Tomcat参考资料:#大致步骤:0. 手工初始化项目<git>更新代码<git>打包杀掉Tomcat 进程备份旧war包部署新war包启动Tomcat<./bin/startup.sh>

    docker项目自动git拉取自动发布shell脚本

    docker项目自动git拉取自动发布shell脚本

    genius:一个基于shell结合git,maven,tomcat的发布脚本

    genius:一个基于shell结合git,maven,tomcat的发布脚本

    maven-release-script:git的Maven发布脚本比Maven发布插件要糟糕

    该脚本提供了与Maven发布脚本类似的功能,但可以与git很好地配合使用。 我之所以创建脚本是因为要使Maven发行插件按我想要的方式工作意味着要保留Maven 2.0版本并且不使用并发构建。 这是一个巨大的痛苦。 用法 ...

    mvn-publish:交互式bash脚本中Git和Maven的快捷方式

    发布 交互式bash脚本中Git和Maven的快捷方式 用法 只需从Maven和git仓库运行此脚本 您必须具有以下有效设置: 吉特 MVN ip 您可以使用shellcheck来验证此脚本

    centOS自动部署java web脚本

    在阿里云CentOS 6.5 java开发集成环境下部署,利用到Git和Maven进行自动化部署,git换成SVN也类似。

    docker-maven-release:带有maven git和gpg2的Docker映像以及触发发布的脚本

    Docker Maven版本使用git,maven和gpg预先设置的docker映像以及用于触发bot释放的脚本支持的功能GPG签名SSH git repo身份验证与Bot用户进行交流增加主要版本,次要版本或补丁版本如果mvn准备失败,则回滚释放。...

    在linux上部署项目.rar

    我们可以使用手动部署或者自动部署两种方式来发布项目 ...在Linux中使用Shell脚本自动部署项目大概有以下5个步骤 1.在Linux中安装Git 使用yum list git命令列出git在线安装包,再输入yum install git来在线安装git

    一键式自动化部署方案.pptx

    其次,对于运维人员来说需要清楚的认识到点击构建后整个的流程(Jenkins构建-->git拉取代码-->maven打包-->docker构建容器-->shell脚本部署),方便在开发人员构建不成功的时候帮助其排查问题,保证服务的稳定性。

    Jenkins+tomcat自动发布的热部署/重启及遇到的问题解决办法(推荐)

     公司的项目一直手动maven打包、上传服务器、关闭/开启tomcat,整个流程下来耗时耗力,虽然可以将所有流程通过shell脚本一次性解决,但如果可以通过idea的Jenkins插件一键自动部署,那更省时省力。  下面是一个...

    eap-build:EAP 6或7的构建脚本

    由于无法构建JBoss EAP 6+,我制作了一个脚本,可以下载JBoss EAP 6+的源代码,修补存储库并使用JBoss Maven存储库启动构建。 结果并非完全是JBoss EAP二进制文件,而是有些不同。 如何 ? 您可以使用git或wget...

    java8源码-rocketmq-docker:RocketMQDocker

    GIT(建议关闭git的autoclrf,以免linux下运行shell脚本的时候由于格式错误无法运行脚本) BUILD 先打包一个apache-rocketmq.tar.gz git clone git@github.com:apache/rocketmq.git cd rocketmq # rocketmq-all-4.1.0-...

    aws-infra-shell

    它具有两个将在下面的活动中执行的shell脚本。 基础架构创建阶段:创建EC2实例(使用AWS CLI) 软件配置阶段:为Tomcat和MySQL配置必需的软件包 应用程序构建阶段:构建Java应用程序(使用maven作为构建工具) ...

    Ubuntu LTS服务器部署Jenkins详细介绍

    在Ubuntu 16.04 LTS...Jenkins支持SCM工具,包括AccuRev、CVS、Subversion、Git、Mercurial、Perforce、Clearcase和RTC等,可以只需基于Apache Ant或Apache Maven的项目,以及任意Shell脚本或Windows批处理命令。 1

    awesome-linux-config:精选的一套精妙的配置脚本,适用于各种基于Linux的系统

    Java 8、11,Maven,NodeJS,Docker,Docker Compose,Minikube,Miniconda,Jupyter Notebook / JupyterLab默认配置,zsh,带有powerlevel10k主题的OhMyZsh和一些非常有用的扩展,AWS cli v1,git,broot,fd-find...

    jenkins.war

    它支持软件配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令。 war 包可直接运行...

    Apg-auto-deploy:从GIT位置执行APG部署

    使用Maven插件和Shell脚本/命令行工具可重复使用代码 贡献 为什么我们需要一种工具来管理Apigee的API开发生命周期? 可插拔环境(数千个npm和grunt模块和插件) Grunt非常适合通过轻松添加自定义任务来进行持续...

    kotlin-interactive-shell:Kotlin语言交互式外壳

    Kotlin语言交互式外壳 该外壳是Kotlin REPL的可扩展实现,具有一系列功能,包括: 语法高亮类型推断命令使用Maven坐标在运行时下载依赖项列出声明的符号历史该项目是将以前的Sparklin Shell迁移到新的Kotlin脚本和...

    Jenkins管道工作流自动化部署

    它支持软件配置管理(SCM)工具(包括AccuRevSCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以执行基于ApacheAnt和ApacheMaven的项目,以及任意的Shell脚本和Windows批处理命令。Jenkins的主要开发者是...

Global site tag (gtag.js) - Google Analytics