草庐IT

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

darren blog 2023-04-15 原文

在开发测试阶段,代码从仓储发布到测试服务器总是少不了的过程,在这个过程中我喜欢把一些繁琐的步骤全部全部聚合到一个脚本里面,只需要执行一个脚本或者把脚本配置到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 '前端打包完成'

有关【二】pig4cloud项目一键build -- 编写发布脚本的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  3. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  4. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  5. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  6. ruby-on-rails - 错误 : Error installing pg: ERROR: Failed to build gem native extension - 2

    我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby​​'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe

  7. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  8. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  9. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  10. ruby-on-rails - 如何在发布新的 Ruby 或 Rails 版本时收到通知? - 2

    有人知道在发布新版本的Ruby和Rails时收到电子邮件的方法吗?他们有邮件列表,RubyonRails有一个推特,但我不想听到那些随之而来的喧嚣,我只想知道什么时候发布新版本,尤其是那些有安全修复的版本。 最佳答案 从therailsblog获取提要.http://weblog.rubyonrails.org/feed/atom.xml 关于ruby-on-rails-如何在发布新的Ruby或Rails版本时收到通知?,我们在StackOverflow上找到一个类似的问题:

随机推荐