• 【二】pig4cloud项目一键build 编写发布脚本


    在开发测试阶段,代码从仓储发布到测试服务器总是少不了的过程,在这个过程中我喜欢把一些繁琐的步骤全部全部聚合到一个脚本里面,只需要执行一个脚本或者把脚本配置到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 '前端打包完成'
    
  • 相关阅读:
    ECNU 3288 成绩计算
    ECNU 3241 字母替换
    ECNU 3243 搜索联系人
    ECNU 2977 成绩排序
    ECNU 2974 统计单词个数
    ECNU 3092 GDP
    【Codeforces Round #693 (Div. 3) D】Even-Odd Game
    【Codeforces Round #693 (Div. 3) C】Long Jumps
    【Codeforces Round #693 (Div. 3) B】Fair Division
    【Codeforces Round #693 (Div. 3) A】Cards for Friends
  • 原文地址:https://www.cnblogs.com/jesn/p/16502059.html
Copyright © 2020-2023  润新知