#!/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脚本
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 使用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...