• 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 

  • 相关阅读:
    Try .NET & Github Gist
    vue & font-awesome
    JSP基础与提高(一).md
    chm转换为html文件
    markdownpad生成目录
    MarkdownPad2的密钥
    删除多余的win10软件
    计算机组成原理与机构期末复习的概念
    sublime text 的小细节设置,让你的代码更优美
    NetBeans主题配色方案加设置.md
  • 原文地址:https://www.cnblogs.com/leozhanggg/p/10917704.html
Copyright © 2020-2023  润新知