批量发布jar包springboot应用

脚本分为主程序和执行程序。主程序叫main,执行程序叫做component.sh。

1.下载: https://gitee.com/argor/main

3.说明文档

  • 简介:启动 jar 包。
    版本:v2.7
    
    脚本功能:
        main - 主程序,放到 $PATH 下执行就行。
               管理所有 jar 包的运行、停止……。
        component.sh - 执行程序,放到需要发布的 jar 包同级目录。
               执行同级目录下 jar 包的实际操作。
        脚本输出信息:
            蓝色字体:执行的目标
            黄色字体:进程 pid
            白色字体:提示信息
            红色字体:执行的动作
    
    部署要求:
        1.修改 main 的变量 PUBLISHDIR,指向希望部署的目录。
            eg:PUBLISHDIR=/test
    
        2.执行程序,在启动程序时,注意开发环境、测试环境命令。默认使用测试环境命令。
            生产环境:附带启动参数
                     启动参数,按照实际情况自行修改变量:JVM_OPTS、SERVER_OPTS、LIST_PORT。
            测试环境:直接启动jar包,仅仅附带日志指定。
            修改环境:搜索标记Prod,Deve。
            生产环境监听的端口由变量 LIST_PORT 指定。
            测试环境监听的端口由 jar 包内配置决定。
            环境仅仅影响启动、重启,不影响停止、查看执行状态。
    
            eg:
                EXEC_ENV="Deve"
                LIST_PORT="7003"
    
    
        3.【创建部署目录名】
            在 PUBLISHDIR 下创建希望发布的应用的目录,放入对应的 jar 包。
            建议:目录名称跟 jar 主文件名一致。
                 目录只创建一级,为了不会同名。
                 以部署目录名为主,jar 包主文件要是不愿意一致的情况下,不要跟所有的【部署目录名】存在字符的包含关系。
    
        4.把执行程序放入 jar 包的同级目录。
            注意:部署时,文件扩展名不可以修改,必须以 .sh 结尾。
    
        5.可选项目
            把 REAEDME 拷贝到 ~/.mainrc 下,以获取帮助。
    
    main 使用语法:
        main [option parameter] [...]
    
        main
            直接执行,把所有的 jar 都启动。(已启动就显示正在运行,未启动就实际启动)
    
        main -t app1
            启动 app1
    
        main -r app4
            重启 app4
    
        main -R
            全部重启
    
        main -avS
            显示版本,显示作者,显示所有 jar 包执行状态。
    
        main 可接受的选项:
            t    启动 
            s    查看执行状态
            p    停止
            r    重启
            R    重启全部
            S    查看全部的执行状态
            T    启动全部
            P    停止全部
            v    版本信息
            a    作者
            h    获取帮助信息
    
        选项接受的参数:(参数就是部署目录名)
            1.建议使用应用部署时的【部署目录名】,同时建议与 jar 包主文件名一致。
            2.部署目录名之间不存在 字符上 的包含关系。因为 main 主程序在执行操作时是以搜索的方式去匹配对应的应用。
            3.当部署目录名可以是多级目录,但是不建议。
            4.部署目录名在确定差异足够的情况下,可以简写。
            5.简写时,比如 example,可以写 ex,只要其他目录没有包含 ex 字符的目录或文件,或 jar 包。
            6.简写时,比如 example,不可以写成 exple。
            7.建议写全。
    
    component.sh 说明:
        1.该脚本可以独立执行,启动同级目录下的 jar 包。
        2.注意:同级目录下只能有一个 jar 包。准备点描述,只能有一个扩展名为“.jar”的文件。
    
        接受的参数:
            1.参数仅包括:start,stop,status,restart。
            2.必须以 root 用户运行。
    
    
    正常执行情况下的报错:
        1.执行命令“main”,无任何显示,表示目标目录里没有对应【部署目录名】,或者【部署目录名】中没有对应的 component.sh 执行文件。
            或者 component.sh 没有执行属性。
        2.提示红色:Can't find jar to running.
            【部署目录名】下没有 jar 包。
    
    其他:
        1.main 程序允许一次执行多个操作。比如同时启动 app1、停止 app3……。
            eg:main -t app1 -s app2 -p app3 -r app4
    
        2.全部启动、重启……
            eg:
                main
                main -R
                main -P
    
        3.已知未解决的问题:
            当写的选项参数【部署目录名】,不存在时,会报错。
            脚本没有对任何使用的 shell 命令做存在校验,要是不存在,程序执行会受影响。
            脚本在执行时,遇见错误,有可能会继续完成后续非法操作。请谨慎使用。
            输入错误的选项,提示选项不正确。当连续输入相同的错误选项,会有多次提示。(正确同)
    
    
        4.程序需要以 root 身份运行
    
        5.选项允许合并
    
    命令依赖:
        tree,grepecho,getopts,dirnamelspsawk,nohup,sleepkill,java,以及一些 bash 内置命令。
一切代码都是为了生活,一切生活都是调剂
原文地址:https://www.cnblogs.com/argor/p/12922805.html