微服务+Jenkins 简单的linux自动部署脚本

2023-11-19

No.1  启停脚本

#!/bin/bash
## 加载配置,避免获取不到java_home 
source /etc/profile

SERVICE_HOME=项目路径
SERVICE_NAME=服务名称

cd $SERVICE_HOME/$SERVICE_NAME
PROG=$SERVICE_HOME/$SERVICE_NAME
PIDFILE=$SERVICE_HOME/$SERVICE_NAME/$SERVICE_NAME.pid  
JARFILE=$SERVICE_HOME/$SERVICE_NAME/$SERVICE_NAME.jar

  
status() {  
    if [ -f $PIDFILE ]; then  
        PID=$(cat $PIDFILE)  
        if [ ! -x /proc/${PID} ]; then  
            return 1  
        else  
            return 0  
        fi  
    else  
        return 1  
    fi  
}  
  
case "$1" in  
    start)  
        status  
        RETVAL=$?  
        if [ $RETVAL -eq 0 ]; then  
            echo "-----$PIDFILE exists, process is already running or crashed"  
            exit 1  
        fi  
        
        ##检测 java环境
        if [ ! -n $JAVA_HOME ]; then
           echo "-----Please check JAVA_HOME!"
           echo "-----Exist"
           exist 1
        else
           echo "-----Jave home: $JAVA_HOME"
           echo "-----Starting $PROG ..." 
           nohup java -server -Xms512m -Xmx512m -jar $JARFILE  > $SERVICE_NAME.log 2>&1 &

           RETVAL=$?
           if [ $RETVAL -eq 0 ]; then
               echo "-----$PROG is started"
               echo $! > $PIDFILE
               exit 0
           else
               echo "-----Stopping $PROG"
               rm -f $PIDFILE
               exit 1
           fi        
        fi
        ;;  
    stop)  
        status  
        RETVAL=$?  
        if [ $RETVAL -eq 0 ]; then  
            echo "-----Shutting down $PROG"  
            kill -9 `cat $PIDFILE`  
            RETVAL=$?  
            if [ $RETVAL -eq 0 ]; then  
                rm -f $PIDFILE  
            else  
                echo "-----Failed to stopping $PROG"  
            fi  
        fi  
        ;;  
    status)  
        status  
        RETVAL=$?  
        if [ $RETVAL -eq 0 ]; then  
            PID=$(cat $PIDFILE)  
            echo "-----$PROG is running ($PID)"  
        else  
            echo "-----$PROG is not running"  
        fi  
        ;;  
    restart)  
        $0 stop  
        $0 start  
        ;;  
    *)  
        echo "Usage: $0 {start|stop|restart|status}"  
        ;;  
esac  
 

 

No.2 配合jenkins 自动部署脚本

#!/bin/bash

## jenkins 自动部署脚本   jekins 项目 Post Steps设置 启动该脚本,配置如下:
#  BUILD_ID=DONTKILLME
#  bash auto_deploy.sh

SERVICE_NAME=服务名称
JARPATH=jenkins打包后的jar包地址
echo "service name:$SERVICE_NAME"
SERVICE_HOME=服务跟路径/$SERVICE_NAME
JARFILE=$SERVICE_HOME/$SERVICE_NAME.jar
BOOTSTRAP_FILE=$SERVICE_HOME/bootstrap.sh

echo "=====service name: $SERVICE_NAME"
echo "=====service home: $SERVICE_HOME"
echo "=====service resouce jar path: $JARPATH"
echo "=====service bootstrap file: $BOOTSTRAP_FILE"
echo "=====service jar: $JARFILE"

##停止原来的服务
echo "-----Stop service"
bash $BOOTSTRAP_FILE stop

echo "-----Delete source jar file path: $JARFILE"
rm -rf JARFILE

echo "-----Copy $JARPATH to $SERVICE_HOME"
cp $JARPATH $SERVICE_HOME 
COPYRULST=$?
if [ $COPYRULST -eq 0 ]; 
then
    echo "-----Copy success,wait start service....."
    bash $BOOTSTRAP_FILE start
    RETVAL=$?
    if [ $RETVAL -eq 0 ];
    then
       echo "-----$SERVICE_NAME started!"
    else
       echo "-----$SERVICE_NAME start failed!"
    fi
else
    echo "-----Not exist $SERVICE_NAME jar"
    exit 1
fi


 

No.3 jenins自动远程部署脚本

#!/bin/bash

## jenkins 自动部远程署脚本,需要配置两个服务器之间免密登录
## 免登陆配置参考:https://blog.csdn.net/u011186019/article/details/51737760?utm_source=blogxgwz4
##jekins 项目 Post Steps设置 启动该脚本,配置如下:
#BUILD_ID=DONTKILLME   -- 表示Jenkins执行完后不杀死该进程,否则会再jenkins执行完后杀死启动的进程
#bash 远程脚本

SERVICE_NAME=服务名称
REMOTE_SERVICES_HOME=服务器HOME
REMOTE_SERVICE_IP=远程服务器IP
REMOTE_SERVICE_HOME=$REMOTE_SERVICES_HOME/$SERVICE_NAME
REMOTE_SERVICE_JAR=$REMOTE_SERVICE_HOME/$SERVICE_NAME.jar
REMOTE_SERVICE_BOOTSTRAP=$REMOTE_SERVICE_HOME/bootstrap.sh

LOCAL_JAR_PATH=jenkins打包后的路径


echo "=============Service name: $SERVICE_NAME"
echo "=============Remote services home: $REMOTE_SERVICES_HOME"
echo "=============Remote server ip: $REMOTE_SERVICE_IP"
echo "=============Remote service home: $REMOTE_SERVICE_HOME"
echo "=============Remote service jar: $REMOTE_SERVICE_JAR"
echo "=============Remote service bootstrap file: $REMOTE_SERVICE_BOOTSTRAP"

echo "-----Stop and Delete remote service: $SERVICE_NAME"
ssh -T root@$REMOTE_SERVICE_IP << remotessh
sh $REMOTE_SERVICE_BOOTSTRAP stop
rm -rf $REMOTE_SERVICE_JAR
exit
remotessh

echo "-----Scp $LOCAL_JAR_PATH to $REMOTE_SERVICE_HOME"
scp $LOCAL_JAR_PATH root@$REMOTE_SERVICE_IP:$REMOTE_SERVICE_HOME 

echo "-----Start remote service"
ssh -T root@$REMOTE_SERVICE_IP << remotessh
sh $REMOTE_SERVICE_BOOTSTRAP start
exit
remotessh
 

 

Git传送门:https://github.com/Xlinlin/spring-cloud-demo/tree/master/SpringCloud-Common/script

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微服务+Jenkins 简单的linux自动部署脚本 的相关文章

  • Web 本地应用程序 Apache:运行 shell 脚本

    我开发了一个 shell 脚本 我想用它创建一个 UI 我决定使用带有本地服务器的 Web 界面 因为我对 HTML PHP 的了解很少 比 QT 或 Java 的了解更多 我只是希望我的 html 可以在我的计算机上运行 shell 脚本
  • 如何使用 jenkins shell 创建新的 git 分支

    我想达到以下目标 在某些詹金斯工作中 从 dev branch 创建一个新分支 对新创建的分支 new branch 进行一些更改 将新创建的分支推送到 git repo 我在詹金斯中执行了以下步骤 我已经在 源代码管理 部分配置了我的 g
  • 使用与后期步骤中的 Shell 脚本中的克隆相同的 http git 凭据

    我想要自动化我们的发布过程 并且我有一个 Maven 项目的以下 Jenkins 构建作业 使用配置的 Jenkins 凭证 用户名 密码 克隆 Git 存储库 执行一些 Maven 命令以进行构建 配置一个后步骤来执行一些额外的 Git
  • BitBucket+Jenkins:仅在特定分支更改时触发构建

    以下是该问题的据称解决方案 尽管它看起来确实是一种解决方法 而不是最终的解决方案 有没有一种方法 通过作业配置或 bitbucket 挂钩配置 我可以将作业设置为仅在推送到特定分支时运行构建 是否可以仅从一个特定分支触发 Jenkins h
  • 如何替换带引号的多单词字符串作为参数?

    我正在尝试替换包含多个带引号的单词的字符串变量作为命令的参数 因此 给出以下示例脚本 请注意 shebang 中的 x 这会导致输出被记录到 stderr bin bash x myArg hello world echo string i
  • 使用 shell 脚本在 docker 容器内运行脚本

    我正在尝试创建一个 shell 脚本来设置 docker 容器 我的脚本文件如下所示 bin bash docker run t i p 5902 5902 name mycontainer privileged myImage new b
  • 如何从 C 文件更改终端中的目录

    如何从 C 程序更改将在终端上生效的目录 实际上不要告诉 system 函数或 chdir 函数 这些仅适用于 C 中的进程或子 shell 假设我正在从 bash shell 执行一个 C 程序 其进程 ID 为 10223 那么 我可以
  • 如何使用 cron 作业运行 python 文件

    您好 我创建了一个 python 文件 例如file example py 该文件将输出 sensex 值 假设该文件在linux系统上的路径为 Desktop downloads file example py 我通常会运行该文件pyth
  • 如何在 Jenkins 管道中使用 Google 服务帐户进行身份验证

    我想用gcloud在 Jenkins 管道中 因此我必须首先使用 Google 服务帐户进行身份验证 我正在使用https wiki jenkins io display JENKINS Google OAuth Plugin https
  • 如何将参数从jenkins传递到selenium

    我正在使用詹金斯和硒 我需要将测试 url 从 jenkins 发送到 selenium 服务器 在常规选项卡下 詹金斯字符串参数 Name APP Default Value http localhost basecode 在构建后操作下
  • 通过 SSH 将变量传递给远程脚本

    我正在通过 SSH 从本地服务器在远程服务器上运行脚本 首先使用 SCP 复制该脚本 然后在传递一些参数时调用该脚本 如下所示 scp path to script server example org another path ssh s
  • 使用 Ruby 验证 Jenkins 插件表单

    我正在用 Ruby 开发一个 Jenkins 插件 您应该能够配置连接到服务器的每个节点 以便在该节点失去与主服务器的连接时将电子邮件发送到指定的地址 EmailNodeProperty添加一个字段来输入电子邮件地址 Save an ema
  • Windows、Emacs、Git Bash 和 shell 命令

    Windows 7 Emacs 24 3 1 git 1 8 1 msysgit 1 我的等效 emacs 文件中有以下内容 if equal system type windows nt progn setq explicit shell
  • 使用脚本自动输入 SSH 密码

    我需要创建一个自动向 OpenSSH 输入密码的脚本ssh client 假设我需要通过 SSH 进入myname somehost用密码a1234b 我已经尝试过 bin myssh sh ssh myname somehost a123
  • shell脚本“x$VARIABLE”中x的用途[重复]

    这个问题在这里已经有答案了 我正在查看一些 shell 脚本 comarison shcu 中 x 的用途是什么 if x USER x RUN AS USER then su RUN AS USER c CATALINA HOME bin
  • 是否有可能在linux中找到包含特定文本的文件?

    考虑这种情况 我在文件夹 Example 下有很多文件 如果我需要找到一个包含特定短语 如 Class Example 的文件 我该如何使用 Linux shell 来做到这一点 linux中有类似 定位 的函数可以做到这一点吗 Thank
  • macOS 更新后 Jenkins 用户消失

    我在 Mac 上运行 Jenkins 作为 CI 服务器 使用用户 jenkins 的典型设置 它在 macOS 10 12 上运行良好 今天我将 macOS 升级到 10 13 High Sierra 升级过程完成后 Jenkins 无法
  • 如何从 Jenkins 管道中的函数返回“allOf”的值

    我们有一个 Jenkins 管道设置 使用 Jenkinsfile 来定义不同构建需要做什么 在我们的很多阶段 当我们要发布版本时 我们需要完成一些工作 但如果不打算发布版本 则可以跳过这些工作 目前我们有这样的代码 when allOf
  • 解锁 Jenkins - 如何

    我已经使用 putty 从 Windows 系统在我的 ec2 实例上安装了 jenkins 当我尝试通过网络访问 jenkins 时 我使用 var lib jenkins secrets initialAdminPassword 解锁
  • 如何剪切(1) 个驼峰字?

    Bash 中有没有一种简单的方法可以将驼峰式单词拆分为其组成词 例如 我想将 aCertainCamelCasedWord 拆分为 a certain Camel Cased Word 并能够选择我感兴趣的那些字段 当单词分隔符是下划线时

随机推荐

  • TCP协议,TCP报头及特点基础介绍

    目录 TCP协议 TCP协议特点 TCP协议适用场景 TCP包首部 什么是TCP连接 如何唯一确定一个TCP连接 有一个 IP 的服务器监听了一个端口 它的 TCP 的最大连接数是多少 TCP与UDP的区别 TCP协议 TCP是一种面向字节
  • 格式化 NameNode 提示 SHUTDOWN_MSG: Shutting down NameNode at xxx/xxx.xxx.xxx.xxx

    在使用 hadoop namenode format 格式化 NameNode 时 提示如下错误 SHUTDOWN MSG Shutting down NameNode at xxx xxx xxx xxx xxx 网上提示 需要让 hos
  • 蜣螂算法优化BP神经网络(DBOBP)数据预测分类模型

    代码运行效果截图
  • Spring事务传播行为,事务隔离级别以及事务失效的场景

    文章目录 事务的实现 事务的传播行为 propagation behavior 事务的隔离级别 事务失效的原因 访问权限 方法被final修饰 方法内部调用 解决办法 新加一个XxxHelpService类 解决办法 在该Service类中
  • 【1day】复现泛微OA某版本SQL注入漏洞

    注 该文章来自作者日常学习笔记 请勿利用文章内的相关技术从事非法测试 如因此产生的一切不良后果与作者无关 目录 一 漏洞描述 二 影响版本 三 资产测绘 四 漏洞复现 一 漏洞描述 泛微e cology是一款由泛微网络科技开发的协同管理平台
  • 活动报名|分布式人工智能:可扩展性、效率和泛化性

    2023年05月25日 星期四 14 00 15 30 智源社区 智源Live 第42期 线上活动将在线举办 阅读原文 报名即可参加 活动主题 分布式人工智能 可扩展性 效率和泛化性 安波 安波是新加坡南洋理工大学校长委员会讲席教授和南洋理
  • dc-8 靶机渗透学习

    信息收集 扫描当前网段 nmap sP 192 168 202 0 24 扫描开放端口 nmap A p v 192 168 202 147 访问靶机的80端口 用Wappalyzer识别框架 随便看看页面 简单对存在的参数进行sql测试
  • JNI字段描述符“([Ljava/lang/String;)V”

    Ljava lang String V 它是一种对函数返回值和参数的编码 这种编码叫做JNI字段描述符 JavaNative Interface FieldDescriptors 一个数组int 就需要表示为这样 I 如果多个数组doubl
  • 项目实训:bd搜索爬虫

    百度爬虫 1 requests库使用 2 lxml库使用 3 pandas库使用 4 数据清洗 5 数据分析可视化 结构分析 接下来的对目标爬虫的结构进行分析 爬虫思路 分析数据来源在哪 如何模拟的像真实用户 如果提取数据 如何保存数据 文
  • UE4 射线检测案例(C++)

    UE4 射线检测 C 开发场景 玩家 C 开发的 武器 C 射线检测函数 蓝图 C 效果 制作流程 添加开火按键映射 新建一个继承ACharacter的C 用蓝图继承刚刚新建的C 然后设置好游戏模式 我 这是是 用了一个枚举 其实你直接调用
  • Linux-ubuntu系统查看显卡型号、显卡信息详解、显卡天梯图

    本文将介绍如下内容 如何在ubuntu系统中查看显卡型号 其他文章大多只介绍了命令而未介绍如何对应显卡型号 在ubuntu系统中显卡详细信息 以及所代表的含义 显卡天梯图 2019年7月 一 查看显卡型号 1 查看显卡型号命令 lspci
  • 自定义全局异常

    1 自定义响应结果码 接口 public interface ResultCode 操作是否成功 true为成功 false操作失败 boolean success 操作代码 int code 提示信息 String message 2 自
  • Xmind for Mac 绿色破解(包含激活序列码)

    下载地址 主程序 https www xmind cn xmind downloads xmind 8 update8 macosx dmg 破解补丁 https carrot ctfile com fs 11269771 30027815
  • Centos7 配置SSH

    一 何为SSH 1 SSH的功能 SSH 为 Secure Shell 的缩写 由 IETF 的网络小组 Network Working Group 所制定 SSH 为建立在应用层基础上的安全协议 SSH 是较可靠 专为远程登录会话和其他网
  • CSDN高校俱乐部名师百校行——河北站

    CSDN高校俱乐部启动IT名师百校行活动 一方面通过线下讲座把CSDN骨灰级导师的宝贵经验分享给高校学生 促进CSDN和高校的沟通互动 一方面将高校俱乐部的学习小组带到高校 公益培养IT技术爱好者为企业所需人才 结合技术直播 组织线下讲座
  • 商标45类分类表明细表_注册商标没选择好分类,注册下来也白搭

    商标是区别商品或服务来源的一种标志 每一个注册商标都是指定用于某一商品或服务上的 正是为了商标检索 审查 管理工作的需要 把某些具有共同属性的商品组合到一起 编为一个类 将所有商品及服务共划分为45个类别 形成了商标分类表 商标注册用商品和
  • 输入一串字符,输出其最长单词的长度(不要求输出最长单词)

    无非就是要解决两个问题 1 如何判断一个单词的开始 lastchar 2 统计该单词的长度 sum 3 记录最大单词长度 max 以下是不用数组的做法 include
  • 系统架构设计师 8:系统质量属性与架构评估

    软件系统属性包括功能属性和质量属性 软件架构重点关注的是质量属性 为了精确 定量地表达系统的质量属性 通常会采用质量属性场景的方式进行描述 在确定软件系统架构 精确描述质量属性场景后 就需要对系统架构进行评估 软件系统架构评估是在对架构分析
  • 乘势而起,走进2019年风口“边缘计算”

    戳蓝字 CSDN云计算 关注我们哦 作者 pasca 原创 蛋蛋团 ID dandan tuan 5G火了 也带火了边缘计算 2019年3月 一篇 5G风口扩散 超清视频边缘计算概念崛起 的文章意外走红 直接导致此前不温不火的 百度搜索暴增
  • 微服务+Jenkins 简单的linux自动部署脚本

    No 1 启停脚本 bin bash 加载配置 避免获取不到java home source etc profile SERVICE HOME 项目路径 SERVICE NAME 服务名称 cd SERVICE HOME SERVICE N