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

    一、自动化部署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
    

      

    二、自动化更新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
    

      

    三、自动化部署已有项目

    #!/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
    

      

    四、自动化回滚项目

    #!/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
    

      

  • 相关阅读:
    ActiveSync合作关系对话框的配置
    WINCE对象存储区(object store)
    Wince 隐藏TASKBAR的方法
    Wince输入法换肤换语言机制
    poj 3080 Blue Jeans 解题报告
    codeforces A. Vasily the Bear and Triangle 解题报告
    hdu 1050 Moving Tables 解题报告
    hdu 1113 Word Amalgamation 解题报告
    codeforces A. IQ Test 解题报告
    poj 1007 DNA Sorting 解题报告
  • 原文地址:https://www.cnblogs.com/chenyablog/p/15219545.html
Copyright © 2011-2022 走看看