#!/bin/bash
PROJECT_NAME=$1
SERVICE_STATUS=$2
PUBLISH_TYPE=$3
PACKAGE_VERSION=$4
ROLLBACK_VERSION=$5
#创建打包目录
mkdir /data/nfs/maven-package
cd /data/nfs/maven-package
#拉取项目代码
git clone git@gitlab.com:roucute/${PROJECT_NAME}.git
#maven打包
mvn clean package -Dmaven.test.skip=true
#判断打包的时jar包还是war包,同时将包名该为项目名加版本号
if [ -f '/data/nfs/maven-package/target/*.jar' ]; then
cp -rp /data/nfs/maven-package/target/*.jar /java-app-package/${PROJECT_NAME}/${PACKAGE_VERSION}.jar
else
cp -rp /data/nfs/maven-package/target/*.war /java-app-package/${PROJECT_NAME}/${PACKAGE_VERSION}.war
fi
#指定发布方式
if [ ${PUBLISH_TYPE} == publish ]; then
ansible -i dev-hosts -m copy -a 'src=/java-app-package/${PROJECT_NAME}/${PACKAGE_VERSION}.[jw]ar dest=/app'
elif [ ${PUBLISH_TYPE} == reback_one ]; then
REBACK=$(ls /java-app-package/${PROJECT_NAME}/ | sort -n |tail -2|head -1)
ansible -i dev-hosts -m copy -a 'src=/java-app-package/${PROJECT_NAME}/${REBACK}.[jw]ar dest=/app'
else
REBACK=$(ls /java-app-package/${PROJECT_NAME}/ | sort -n |tail -3|head -1)
ansible -i dev-hosts -m copy -a 'src=/java-app-package/${PROJECT_NAME}/${REBACK}.[jw]ar dest=/app'
fi
#指定版本回退
if [ ! -z ${ROLLBACK_VERSION} ]; then
ansible -i dev-hosts -m copy -a 'src=/java-app-package/${PROJECT_NAME}/${ROLLBACK_VERSION}.[jw]ar dest=/app'
fi
CI/CD脚本
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 使用gitlab ci/cd + fastlane 在ios上实施ci/cd gitlab跟github类似,都是...
- 粉色: GitLab的CI/CD由.gitlab-ci.yml文件配置 每个项目根目录可以配置一个.gitlab-...
- Jenkins与Docker的自动化CI/CD实战 https://blog.51cto.com/lizhenli...