【二】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 '前端打包完成'

Original: https://www.cnblogs.com/jesn/p/16502059.html
Author: jesn
Title: 【二】pig4cloud项目一键build — 编写发布脚本

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/586666/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux 用户及组相关命令

    与用户相关的配置文件:/etc/passwd: #用户的配置文件, 保存用户账户的基本信息/etc/shadow #用户影子口令文件 一、用户帐号文件——passwd 1.&#82…

    Java 2023年6月7日
    074
  • 在PDF指定位置添加数据

    第一种方案 使用itext填充静态PDF模板 然后生成PDF新文件 1 使用Adobe Acrobat 编辑原PDF 添加文本域 itext依赖 com.itextpdf itex…

    Java 2023年6月8日
    088
  • 为什么要使用String.intern()

    最近在阅读《深入理解Jav虚拟机》的运行时常量池章节,看到”java语言并不要求常量池一定只有编译器才能产生…运行期间也可以将新的常量放入常量池,这种特性被…

    Java 2023年6月7日
    078
  • 线程分离

    在我们使用默认属性创建一个线程的时候,线程是 joinable 的。 joinable 状态的线程,必须在另一个线程中使用 pthread_join() 等待其结束, 如果一个 j…

    Java 2023年5月30日
    074
  • Oracle 序列学习与使用总结

    by:授客 QQ:1033553122 序列是oracle提供的用于生成一系列数字的数据库对象,序列会自动生成顺序递增的序列号,可用于提供唯一的自动递增主键。序列和视图一样,并不占…

    Java 2023年6月16日
    064
  • asp.net ajax 客户端框架未能加载 sys 未定义

    一般来说与配置文件有关: 查看HTML源文件,会发现脚本有 后缀是.axd 把以上路径放IE里如果能提示下载,则说明是其他问题,如果不能提示继续往 下看。 我找了个能正常运行AJA…

    Java 2023年6月13日
    084
  • BP神经网络– 基本模型

    BP 神经网络中的 BP 为 Back Propagation 的简写,最早它是由Rumelhart、McCelland等科学家于 1986 年提出来的,Rumelhart 并在N…

    Java 2023年6月15日
    088
  • 22.线程自解锁

    代码结构比较复杂的情况下,手动加锁,解锁,可能会有所遗漏。 这种情况下,推荐使用自解锁(自解锁在构造的时候lock,在析构的时候unlock)(对象在超出作用域时会执行析构) 自解…

    Java 2023年5月29日
    075
  • 配置中心的设计-nacos vs apollo

    和 apollo 一样,nacos 也是一款配置中心,同样可以实现配置的集中管理、分环境管理、即时生效等等。不过,nacos 还具备了服务发现的功能。 分析 apollo 时,我们…

    Java 2023年6月14日
    080
  • 使用ImpromptuInterface反射库方便的创建自定义DfaGraphWriter

    在本文中,我为创建的自定义的 DfaGraphWriter实现奠定了基础。 DfaGraphWriter是公开的,因此您可以如上一篇文章中所示在应用程序中使用它,但它 _使用的_所…

    Java 2023年5月30日
    070
  • JVM类加载机制

    JVM类加载机制 JVM类加载机制分为:加载,验证,准备,解析,初始化五步,如 下图: 加载:这个阶段会在内存中生成一个代表这个类的java.lang.Class对象作为方法区这个…

    Java 2023年6月7日
    058
  • CentOS-Docker部署collabora office实现文档在线浏览

    0 关于Collabora Online 实现网页中文档在线浏览和操作Collabora Online官方文档:https://www.collaboraoffice.com/co…

    Java 2023年6月9日
    0102
  • Rancher证书过期查看解决

    1. rancher证书过期 1.1 现象 Rancher UI 无法访问 Rancher …

    Java 2023年6月8日
    0122
  • 千万级别的表分页查询非常慢,怎么办?

    一、问题复现 在实际的软件系统开发过程中,随着使用的用户群体越来越多,表数据也会随着时间的推移,单表的数据量会越来越大。 以订单表为例,假如每天的订单量在 4 万左右,那么一个月的…

    Java 2023年6月9日
    064
  • spring 使用异步任务

    1.说明 在springboot 中使用 @Async 实现异步任务处理,下面介绍一下如何实现这个。 2.实现代码 2.1 增加@EnableAsync @EnableAsync …

    Java 2023年5月30日
    081
  • 题目: 给定一个数组,查询数组中指定的元素对应的索引

    package com.gao.test; /* 题目: 给定一个数组,查询数组中指定的元素对应的索引 */ public class TestDemo08 { public st…

    Java 2023年6月5日
    090
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球