1. 首页
  2. 技术知识

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\r”

  expect eof

  spawn scp -r $username@$host:$dir/testProduce/lib $dir/testProduce/

  expect “*password:”

  send “$password\r”

  expect eof

  spawn scp $username@$host:$dir/testProduce/testProduce.jar $dir/testProduce/

  expect “*password:”

  send “$password\r”

  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到此这篇关于Linux实现项目自动化部署的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持共生网络。

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/108080.html

联系我们