shell 实现SVN自动下载、TAG分支版本、MAVEN编译打包

如题,多的话不说,直接上源码

1、SVN实现分支版本(copy)

if [ -z "${LOADED}" ]; then
    source ./env.conf
fi

if [ -z "${TO_VERSION}" ]; then
    echo "Usage:tag_all [-v svn_version -p project_name] to_version"
    exit 1
fi

MAVENPRO="cportal${TO_VERSION}"

if [ ! "${PROJECT_NAME}" == "" ]; then
    CPORTAL_TAG_PARENT_PATH="${PATH}/tags/cportal1.0.0/${MAVENPRO}"
    CPORTAL_TAG_PATH="${CPORTAL_TAG_PARENT_PATH}/${PROJECT_NAME}"
    CPORTAL_TRUNK_PATH="${PATH}/trunk/portal1.0.0/IECfmall/mavenPro/${PROJECT_NAME}"
    EXIST_TAG_PARENT_PATH=$(svn list ${CPORTAL_TAG_PARENT_PATH}|grep ${PROJECT_NAME})
else
    CPORTAL_TAG_PARENT_PATH="${PATH}/tags/cportal1.0.0"
    CPORTAL_TAG_PATH="${CPORTAL_TAG_PARENT_PATH}/${MAVENPRO}"
    CPORTAL_TRUNK_PATH="${PATH}/trunk/portal1.0.0/IECfmall/mavenPro"
    EXIST_TAG_PARENT_PATH=$(svn list ${CPORTAL_TAG_PARENT_PATH}|grep ${MAVENPRO})
fi

if [ -n "$EXIST_TAG_PARENT_PATH" ]; then
    echo "${CPORTAL_TAG_PATH} already exists"
    exit 1
fi

if [ -z "$SVN_VERSION" ]; then
    echo "svn --username=username cp ${CPORTAL_TRUNK_PATH} ${CPORTAL_TAG_PATH}"
    svn --username=username cp ${CPORTAL_TRUNK_PATH} ${CPORTAL_TAG_PATH} -m "commit log"
else
    echo "svn --username=username cp -r ${SVN_VERSION} ${CPORTAL_TRUNK_PATH} ${CPORTAL_TAG_PATH}"
    svn --username=username cp -r ${SVN_VERSION} ${CPORTAL_TRUNK_PATH} ${CPORTAL_TAG_PATH} -m "commit log"
fi

2、SVN从TAG版本下载(checkout)

if [ -z "${LOADED}" ]; then
    source ./env.conf
fi

if [ -z ${TO_VERSION} ]; then
    echo "Usage:checkout_all [-p project_name] to_version"
    exit 1
fi

if [ ! -d "$SRC_HOME" ]; then
    echo "==============create $SRC_HOME"
    mkdir -p $SRC_HOME
fi

cd $SRC_HOME

#删除除最近3个版本的以前版本
ls -rt|head -n -3|xargs -i rm -rf {}
check_success

MAVENPRO="cportal${TO_VERSION}"

if [ ! "${PROJECT_NAME}" == "" ]; then
    if [ ! -d "${SRC_HOME}/${MAVENPRO}" ]; then
        echo "==============create ${SRC_HOME}/${MAVENPRO}"
        mkdir -p ${SRC_HOME}/${MAVENPRO}
    fi
    cd "${SRC_HOME}/${MAVENPRO}"
    rm -rf ${PROJECT_NAME}
    CPORTAL_PATH="https://${PATH}/tags/cportal1.0.0/${MAVENPRO}/${PROJECT_NAME}"
    echo "svn checkout $CPORTAL_PATH"
    svn --username=username checkout $CPORTAL_PATH
else
    cd $SRC_HOME
    rm -rf $MAVENPRO
    CPORTAL_PATH="https://${PATH}/tags/cportal1.0.0/${MAVENPRO}"
    echo "svn checkout $CPORTAL_PATH"
    svn --username=username checkout $CPORTAL_PATH $MAVENPRO
fi

3、MAVEN编译及打包

if [ -z "${LOADED}" ]; then
    source ./env.conf
fi

if [ -z "${TO_VERSION}" ]; then
    echo "please input impl_all version"
    exit 1
fi

echo "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ALL impl execute start!!"
echo ""

#删除除最近3个版本的以前版本
cd ${DEPLOY_HOME}
ls -rt|head -n -3|xargs -i rm -rf {}
check_success

if [ -z "${PROJECT_NAME}" ]; then
    cd ${SRC_HOME}/cportal${TO_VERSION}/cportalaggregator
else
    cd ${SRC_HOME}/cportal${TO_VERSION}/${PROJECT_NAME}
fi

mvn clean versions:set -DnewVersion=${TO_VERSION}
mvn -U  -Dmaven.test.skip=true -Dmaven.test.failture.ignore=true install
if [ $? -ne 0 ]; then
    exit 1
fi    

echo ""

DES_PATH="${DEPLOY_HOME}/cportal${TO_VERSION}/"
if [ ! -d "$DES_PATH" ]; then
    mkdir -p $DES_PATH
fi

if [ "${PROJECT_NAME}" == "" ]; then
    cd ${SRC_HOME}/cportal${TO_VERSION}
    for pathname in cportal*
    do
        if [ "${pathname}" == "cportalaggregator" ]; then
            continue
        fi

        FILE_LIST=$(ls -l ${SRC_HOME}/cportal${TO_VERSION}/${pathname}/target/|grep ^-|awk ‘{print $9}‘)
        for file_name in ${FILE_LIST}
        do
            echo "cp ${SRC_HOME}/cportal${TO_VERSION}/${pathname}/target/${file_name} $DES_PATH"
            cp -rf ${SRC_HOME}/cportal${TO_VERSION}/${pathname}/target/${file_name} $DES_PATH
        done
    done
else
    FILE_LIST=$(ls -l ${SRC_HOME}/cportal${TO_VERSION}/${PROJECT_NAME}/target/|grep ^-|awk ‘{print $9}‘)
    for file_name in ${FILE_LIST}
    do
        echo "cp -rf ${SRC_HOME}/cportal${TO_VERSION}/${PROJECT_NAME}/target/${PROJECT_NAME}-* ${DES_PATH}"
        cp -rf ${SRC_HOME}/cportal${TO_VERSION}/${PROJECT_NAME}/target/${PROJECT_NAME}-* ${DES_PATH}
    done
fi

echo ""
echo "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ALL impl execute end!!"

上述代码基础文件(env.conf):

if [ -z "${LOADED}" ]; then
    LOADED=1
fi

HOME=/home/mh
DEPLOY_HOME=$HOME/cportal1.0.0
LOG_HOME=$HOME/logs
SRC_HOME=$HOME/src

ARG_NUMBER=$#
while [ ${ARG_NUMBER} -gt 0 ];
do
    case $1 in
    (-v)
        shift
        SVN_VERSION=$1
        ;;
    (-p)
        shift
        PROJECT_NAME=$1
        ;;
    (*)
        TO_VERSION=$1
        break;
        ;;
    esac
    shift
done

#判断是否成功
check_success(){
    if [ $? -ne 0 ]; then
        exit 1
    fi
}

mvn_cmd(){
    mvn -U  -Dmaven.test.skip=true -Dmaven.test.failture.ignore=true
}

echo_info(){
    echo "===================================================================================[$PROJECT_HOME/$1] execute end!!"
}

echo_interf_info(){
    echo "[PROJECT LIST]"
    cd $PROJECT_HOME
    ls -ld VCPCOMMON && ls -ld *I
    echo ""
}
时间: 2024-08-24 12:16:18

shell 实现SVN自动下载、TAG分支版本、MAVEN编译打包的相关文章

hudson用SVN插件下载代码,用ant插件打包, 用SSH插件部署

hudson自动化部署步骤 1.SVN插件->下载代码 2.ant插件->war打包    (hudson服务器上可安装多个版本ant,每个项目可以选择一个ant版本.Build File:填写build.xml构建脚本路径) 3.SSH插件->shell脚本部署,重启tomcat 4.SSH插件讲解 4.1.远程服务器配置SSH Servers name : xxxx           host:192.168.0.2           user:root           re

自动下载源码_并编译_打包_部署_重启服务的Shell脚本

这里面Shell的各个操作含义,可参考我三年前的这篇文章:http://blog.csdn.net/jadyer/article/details/7960802 #!/bin/sh APP_NAME=engine APP_WARS=JadyerEngine-web/target APP_PATH=/app/tomcat-6.0.43 APP_CODE=sourcecode SVN_URL=https://svn.sinaapp.com/jadyer/2/repository/JadyerEngi

eclipse中集成svn maven开发手册---maven编译打包

使用eclipse中maven进行打包. 打好的包在相应的workspace下面会有一个release的文件夹,如图

cdh hadoop 安装包自动下载脚本

cdh hadoop 安装包自动下载脚本 下面的shell脚本用于自动下载cdh5.2.1的hadoop rpm包. 测试通过. #!/bin/bash # # @file # cdh5_rhel6_x64_cdh5.2.1-downloads.sh # # @date # 2014-12-18 # # @author # cheungmine # # @version # 0.0.1pre # # download all RPMS from: # -- http://archive.clou

maven如何下载和安装, Maven详解

[项目管理和构建]--Maven下载.安装和配置(二) blog.csdn.net 2015年05月01日 14:22 在上篇博文[项目管理和构建]--Maven简介(一)中我们了解到maven是一种全新的项目构建方式,让我们的开发更加简单,高效.Maven主要做的是两件事: 统一开发规范与工具 统一管理jar包 这两件事情他都做到了,而且还做了更多的事情.Maven还可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等.目前Apache下绝大多数项目都已经采用Maven进行管理.

Jenkins 配合 GitLab 实现分支的自动合并、自动创建 Tag

Jenkins 配合 GitLab 实现分支的自动合并.自动创建 Tag 背景 GitFlow工作流简介 Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提供了用于一个健壮的用于管理大型项目的框架,非常适合用来管理大型项目的发布和维护. 贯穿整个开发周期,master和develop分支是一直存在的,master分支可以被视为稳定的分支, 而develop分支是相对稳定的分支,特性开发会在feature分支上进行,发布会在release分支上进行,而bug修复则会在

SVN 主干(trunk)、分支(branch )、标记(tag)

主干(trunk).分支(branch ).标记(tag) 在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆. 在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别.至于何时用tag,何时用branch,完全由人主观的根据规范和需要来选择,而不是强制的(比如cvs). 一般情况下, trunk:是用来做主方向开发的,一个新模块的开发,这个时候就放在trunk,当模块开发完成后,需要修改,就用branch. branch

Shell 脚本笔记01-tftp服务器自动下载调试

由于工作上要反复从PC上交叉编译好应用程序,并通过tftp下载到ZYNQ板子上进行运行调试.重复敲命令过于麻烦,所以编写一个脚本实现自动下载,改权限和运行功能. 一.准备工作 将ZYNQ7000开发板和主机端(PC或虚拟机)连接到同一网段. 主机端安装好tftpd-hpa服务器和xinet.d,启动运行 [email protected]:~$ sudo service xinetd restart #开启xinetd服务 [sudo] password for z: xinetd stop/w

svn 回滚到上一个版本shell 脚本

#!/bin/sh ############################## # 2015-07-15 # # author jackluo # # Email [email protected] # ############################## version_list=$(svn log --limit 2|sed '1d'|sed '$d'|awk -F '|' '{print $1}'|awk -v RS="" '{gsub("\n",&