zoukankan      html  css  js  c++  java
  • Linux之自动化部署


    No.1  自动化部署git项目

    一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

    #!/bin/bash
    
    # 清除项目进程和历史文件
    pkill -f start.py
    sleep 1
    cd /root/automation |rm -rf testProduce/
    
    # 获取项目最新git代码(前提服务器配置好git账户)
    git clone git@dev.test.com:test_code/testProduce.git
    
    # 启动项目
    cd testProduce/
    nohup /usr/python/bin/python3 start.py &
    sleep 3
    
    # 检查是否启动成功
    pinfo=`pgrep -af start.py`
    if [ -n $pinfo ]
    then
      echo "Successfully!!!"
    else
      echo "Failed!!!"
    fi

    No.2  自动化更新git项目

    一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

    #!/bin/bash
    
    # 切换至项目路径
    cd /root/automation
    
    # 检查项目是否有更新
    gitinfo=`git pull`
    if [[ "${gitinfo}" == "Already up-to-date." ]]
    then
      echo "Already up-to-date."
    else
      # 重启项目
      pkill -f start.py
      sleep 1
      nohup /usr/python/bin/python3 start.py &
      sleep 3
    
      # 检查是否启动成功
      pinfo=`pgrep -af start.py`
      if [ -n $pinfo ]
      then
        echo "Successfully!!!"
      else
        echo "Failed!!!"
      fi
    fi

    No.3  自动化部署已有项目

    一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

    #!/bin/bash
    
    # 设置源服务器信息
    username="root"
    password="root"
    host="10.22.33.44"
    dir="/usr/local/app"
    
    # 备份当前项目(以备回滚)
    echo "Saving testProduce..."
    now=`date +%Y%m%d%H%M%S`
    cd $dir | mkdir -p bak/$now
    tar -czvf testProduce.tar.gz testProduce/ testProduce-web/
    mv testProduce.tar.gz bak/$now/testProduce.tar.gz
    
    # 拷贝项目更新包
    echo "Copying testProduce..."
    /usr/bin/expect<<EOF
      set timeout 10
      spawn scp -r $username@$host:$dir/testProduce-web/ $dir
      expect "*password:"
      send "$password
    "
      expect eof
    
      spawn scp -r $username@$host:$dir/testProduce/lib $dir/testProduce/
      expect "*password:"
      send "$password
    "
      expect eof
    
      spawn scp $username@$host:$dir/testProduce/testProduce.jar $dir/testProduce/
      expect "*password:"
      send "$password
    "
      expect eof
      #interact
    EOF
    
    # 重启项目
    echo "Restarting testProduce..."
    sh testProduce/restart.sh
    sleep 8
    
    # 检查是否启动成功
    pinfo=`pgrep -af testProduce.jar`
    if [ -n $pinfo ]
    then
      echo "Successfully!!!"
    else
      echo "Failed!!!"
    fi
    
    :<<COMMENTBLOCK
      pkill -f testProduce.jar
    COMMENTBLOCK

    No.4  自动化回滚项目

    一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

    #!/bin/bash
    
    # 清除当前项目
    echo "Clear..."
    rm -rf testProduce* |cd bak
    
    # 检查是否指定回滚版本(默认回滚上个版本,按日期排序,所以此路径不能有其他文件)
    if [ -z $1 ]
    then
      vs=`ls -l |sort -r |awk 'NR==2 {print $NF}'`
    else
      vs=$1
    fi
    
    # 回滚项目
    echo "Reset>>> $vs"
    cd $vs |cp testProduce.tar.gz ../../
    tar -zxvf testProduce.tar.gz |rm -f testProduce.tar.gz
    
    # 重启项目
    echo "Restarting testProduce..."
    sh testProduce/restart.sh
    sleep 8
    
    # 检查是否启动成功
    pinfo=`pgrep -af testProduce.jar`
    if [ -n $pinfo ]
    then
      echo "Successfully!!!"
    else
      echo "Failed!!!"
    fi

    ———— 欢迎各路大神指点,转载请附上链接:https://www.cnblogs.com/leozhanggg/p/10917704.html 

  • 相关阅读:
    ASP.NET 4.0尚未在 Web 服务器上注册 解决方法
    Node.js
    AC多模式匹配算法
    红黑树的实现原理
    OAuth2.0 用户验证授权标准 理解
    SNMP 和 NetBios协议理解
    使用RSA非对称密钥算法实现硬件设备授权
    常用
    目录列表
    Memcache的 简介
  • 原文地址:https://www.cnblogs.com/leozhanggg/p/10917704.html
Copyright © 2011-2022 走看看