Change The World

沉默是一种力量,嘶吼就不是力量了?

0%

shell脚本篇


分享一个简单的项目管理脚本,有待于补充,欢迎指正

前提说明

    本文使用的部署工具使用的是pm2,项目存储在GitHub, 因此脚本主要做的的事情就是从GitHub上拉取最新的代码进行本地部署,项目服务的启动、关闭、重启、重载配置文件(pm2)

脚本功能

  • 启动服务
  • 关闭服务
  • 重启服务
  • 重载配置文件
  • 更新项目
  • 帮助说明

脚本内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/bin/bash
myapp_path=~/projectPath # 项目路径
cd ${myapp_path}
pid=$(ps -ef |grep node|grep -v grep|awk '{print $2}') # 获取项目进程号
start(){
if [ -z ${pid} ]
then
pm2 start pm2.json
else
echo -e "\E[1;32;40mAPP now at starting......"; tput sgr0
fi
}
stop(){
if [ -z ${pid} ]
then
echo -e "\E[1;31;40mAPP have been stop."; tput sgr0
else
pm2 stop pm2.json
fi
}
restart(){
pm2 restart pm2.json
}
reload(){
pm2 reload pm2.json
}
refresh(){
git pull
npm run compile
restart
}
help(){
cat<<EOF
USE GUIDE

1.启动
$ myapp start
2.关闭
$ myapp stop
3.重启
$ myapp restart
4.重载配置文件
$ myapp reload
5.更新项目
$ myapp refresh

EOF
}
main(){
if [ $# -ne 1 ];then
help
exit 1
fi
case $1 in
"start")
start
;;
"stop")
stop
;;
"restart")
restart
;;
"refresh")
refresh
;;
"reload")
reload
;;
*)
help
;;
esac
}
main $@

总结

    通过shell编写一些脚本,可以减少我们工作当中经常重复的工作,对于运维工作者是一种必不可少的技能了,当然本文展示的知识一些简单的操作,如果需要更加自动化部署项目,我们可以考虑使用GitHub上的webhook功能

附录

jenkins

瓦力上线部署

Comparison of continuous integration software

不如请我吃根冰棒吧