在开发测试阶段,代码从仓储发布到测试服务器总是少不了的过程,在这个过程中我喜欢把一些繁琐的步骤全部全部聚合到一个脚本里面,只需要执行一个脚本或者把脚本配置到jenkins上通过按钮点击下即可,这样可以将更多的时间专注于开发阶段。
pig4cloud是以微服务的方式进行开发的,如果手动的一个个的去发布微服务的话,会累屎的。我们在这里写了一个 cicd.sh脚本可以传递两个参数 uijava 来决定是发布前端还是后端代码,如果不带任何参数,则前后端均发布。

cicd.sh

执行方式有三种:

# 1、只发前端
sh ./cicd.sh ui

# 2、只发后端

sh ./cicd.sh java

# 3、前后端都发

sh ./cicd.sh  
或者
sh ./cicd.sh java ui

这里需要注意下,每次docker exec 进入到容器中,首先要执行下source /etc/profile命令,否则 所有的环境变量配置均不会生效

#!/bin/bash

param=$1

# 0:build  1:not build
javaBuild=0
uiBuild=0

# 判断需要build的那个
if [ -n "$param" ];then
     if [ $param = "java" ];then
        uiBuild=1
    elif [ $param = "ui" ];then
        javaBuild=1
    fi
fi


if [ $javaBuild -eq 0 ];then
    echo '-------------------------后端代码开始生成-----------------------------'
    cd /data/git/wuye
    git pull

    # 这里的路径是容器里的路径,并非是宿主主机的路径
    docker exec -t centos-build  sh /data/chwl.online/wuan/build/mvn-clean-install.sh

    # 1、先删除容器
    CON_OA_CONTAINER=$(docker ps -aq -f "name=wuye-oa" | wc -l)
    if [ $CON_OA_CONTAINER -eq 2 ];then
        docker rm -f wuye-oa
    fi

    # 2、再删除镜像
    CON_OA_IMAGE=$(docker image ls 'wuye-oa:latest' | wc -l)
    if [ $CON_OA_IMAGE -eq 2 ];then
        docker rmi wuye-oa
    fi

    cd /data/git/wuye
    docker-compose up -d

fi


if [ $uiBuild -eq 0 ];then

    echo '-------------------------前端代码开始生成-----------------------------'
    cd /data/git/wuye-ui
    git pull

    # 这里的路径是容器里的路径,并非是宿主主机的路径
    docker exec -t centos-build  sh /data/chwl.online/wuan/build/node-build.sh

    CON_UI_CONTAINER=$(docker ps -aq -f "name=wuye-ui" | wc -l)
    if [ $CON_UI_CONTAINER -eq 1 ];then
        docker rm -f wuye-ui
    fi

    CON_UI_IMAGE=$(docker image ls 'wuye-ui:latest' | wc -l)
    if [ $CON_UI_IMAGE -eq 2 ];then
        docker rmi wuye-ui
    fi


    cd /data/git/wuye-ui/docker
    docker-compose up -d
fi

#  方式一:
# if [[ -n $(docker ps -aq -f "name=wuye-ui") ]];then
#         docker rmi wuye-ui
# else
#         echo "wu-ui 容器不存在,无需删除"
# fi

mvn-clean-install.sh

echo '---------------java -->wuye ----------mvn build'
source /etc/profile

cd /data/wuye
echo '当前目录'+$pwd

echo '开始生成jar包'
mvn clean install -Dmaven.test.skip=true

echo 'jar包生成完毕'

node-build.sh

echo '---------------node -->wuye-ui ----------node build'

source /etc/profile

cd /data/wuye-ui
echo '当前目录'+$pwd

# 这里最好判断下nvm list 里面是否有 v14.18.1版本,如果没有的话则执行安装,如果有的话则直接切换版本
echo '切换node 版本'
nvm use v14.18.1
echo node -v

echo '开始打包前端文件'
npm install
npm run build:docker

echo '前端打包完成'