shell构建项目打包脚本

打包构建Docker镜像并推送镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/sh
# 当前文件夹
REPOSITORY_NAME="./bus-order-consumer/external"
# git代码地址(配合ssh使用最佳)
REPOSITORY_URL="git代码地址"
# 项目名称
CONTAINER_NAME="gb-bus-order-consumer"
# 项目版本
CODE_VERSION="0.0.1-SNAPSHOT"
# 环境前缀字符
PROFILE_VERSION="external-pre"
# 分支或者环境
GIT_VERSION="pre"
# 版本号
versionid="0.0.1"

echo "================清除仓库目录================"
# 清楚原有的文件夹
rm -rf ${REPOSITORY_NAME}
# 新建文件夹
mkdir -p ${REPOSITORY_NAME}

cd ${REPOSITORY_NAME}

echo "================克隆远程仓库================"
git clone -b ${GIT_VERSION} ${REPOSITORY_URL}
# 进入需要编译的目录
cd "./java/gb-business/gb-bus-order/${CONTAINER_NAME}"

echo "================代码打包中================"
# 本地maven 构建项目
/usr/local/maven/bin/mvn clean install -P ${PROFILE_VERSION}

echo "================移动jar包================"
# 将jar包 移动到docker file文件夹下。
cd "./target"
cp ${CONTAINER_NAME}-${CODE_VERSION}.jar "../docker/app.jar"

cd "../docker"

echo '================开始推送镜像================'
# 推送docker image到指定的镜像仓库

docker login --username=************ --password=********** url

docker build --build-arg JAR_FILE=./app.jar -t 仓库地址/${CONTAINER_NAME}:${PROFILE_VERSION}-${CODE_VERSION}-${versionid} .

docker push 仓库地址/${CONTAINER_NAME}:${PROFILE_VERSION}-${CODE_VERSION}-${versionid}

echo '================结束推送镜像================'
# 清除本地的docker image
docker rmi $(docker images | grep "${CONTAINER_NAME}" | awk '{print $3}')

echo '=================删除镜像================='