• jenkins发布指定jar包分发具体机器


    jenkins发布指定jar包分发具体机器

    一、需求说明

      线上有一个微服务系统,由各种jar包组成,当时给过来的服务器配置都是统一的2核8G,想着先交付再优化的原则,而且jar包才5个也不多,所以直接部署在一台服务器上。后来随着系统功能的完善,又加了2、3个jar包。

      之后,发现这台服务器有点撑不住,内存使用率经常到95%左右,偶尔还出现系统内存不足,把几个占用系统内存过高的java进程杀掉。曾经调过JVM参数优化,但效果不尽如人意,所以就有了拆分一些jar包到别的服务器需求,只要注册中心nacos能连上,jar包放不同的服务器是没有关系的。

     

    二、实现

      主要利用jenkins去实现。

           大致交代下未拆分前的发布机制。下图的DEPLOY_JAR是要发布的jar包,我这里做了优化,能根据开发需要,发想发的jar包(利用一个maven构建完jar包的路径位置文件),jar包之间用逗号分隔,然后打包dst.tar.gz文件,发布到具体机器。

      实现这个需求,上面这块没有变化,改的主要是Post Step部分,先规划好哪几个jar包需要从服务器A放到服务器B,假设是jar1,jar2还是在原服务器A,其他jar包放到新服务器B,其中outfiles文件用于记录jar包名字,dst目录用于放发布的jar包

    1、Post Step的“执行shell”配置如下:

    ##1、获取要发布的jar包名,写入out文件
    echo $DEPLOY_JAR | xargs -d, -n2 -I {} echo {} | sed '/^$/d' > out
    
    touch outfiles_服务器A
    touch outfiles_服务器B
    mkdir dst_服务器A
    mkdir dst_服务器B
    
    ##2、遍历out文件,根据jar包,放到不同目录下
    cat out | while read line
    do
       jar_name=`echo $line.jar`
       src_jar=`cat deploy.txt |grep ${jar_name} |awk -F'=' '{print $2}'`
       #假设发布jar1 和 jar2到服务器A, 其他到服务器B
       if [ $line == 'jar1包名' ] || [ $line == 'jar2包名' ]; then 
            echo ${jar_name} >> outfiles_服务器A
           /bin/cp $src_jar dst_服务器A/
       else
            echo ${jar_name} >> outfiles_服务器B
           /bin/cp $src_jar dst_服务器B/
       fi
    done
    
    /bin/mv outfiles_服务器A dst_服务器A/
    /bin/mv outfiles_服务器B dst_服务器B/
    
    
    #打包到远程
    tar -zcf dst_服务器A.tar.gz dst_服务器A
    tar -zcf dst_服务器B.tar.gz dst_服务器B

    2、构建后操作

    SSH Server写两个,分别是服务器A和服务器B

  • 相关阅读:
    day23
    day22
    day21
    day20
    day19
    day18
    day17
    day16
    day15
    PowerDesigner中NAME和COMMENT的互相转换,需要执行语句
  • 原文地址:https://www.cnblogs.com/windysai/p/14427431.html
Copyright © 2020-2023  润新知