一站式高效管理你多个 github webhook.
等你辛苦建立好了静态博客,却依然要忍受每次本地更新后,还要 ssh 到远程重新 git pull 一遍的痛苦。
当你终于用 webhook handler 写了一堆代码来解决这个应用的部署问题后,你依然发现,还有许许多多的项目等着你为它们写部署代码。
要是有一个集成化的工具,在一个目录里帮我管理所有的 webhook 就好了! fish-hook 就是为此诞生的,它最大的特色就是:极力缩短开发者花在配置上的时间,约定大于配置。
安装 python3.5 或更高版本,再用 pip 包管理工具安装 fish-hook
$ pip3 install fish-hook
$ fish-hook init
ssh 进入远程主机后,运行该命令,并且设置一个通用的端口,例如: 2333 。这样就创建了名为fish
的目录,这是控制所有 webhook 的总目录。$ cd fish
进入该目录。
$ fish-hook new
假如你在 github 上开通了一个名为blog
的仓库,并且打算为其开通 webhook 来实现自动部署。那么就输入blog
以及你要为此 webhook 设定的密钥。
完成后,blog
的 webhook 接收端就部署好了。
首先打开仓库的 github 设置页面,然后创建 github webhook ,填入基本信息。
可以注意到Payload URL
这一栏,前面的 IP 地址就是你远程主机的外网 IP 地址
,之后是你刚刚设置的端口,斜杆后就是blog
目录,与接收端的名字相同。
密钥一栏当然也要与在 fish-hook 上设置的相同。
假设你使用git push
推送了新的内容到 blog 仓库,如何执行特定的 shell 脚本呢?
此时的 fish-hook 目录是这样的:
fish/
config.json
blog/
app_config.json
push.sh
为什么有一个 push.sh 文件呢?就这意味着,当你仓库接受新的 push 事件后, fish-hook 就会运行push.sh
这个 shell 脚本,里面的内容完全可以自己设置。
这就是所谓的约定大于配置
, webhook 接受到什么样的命令,就会运行相同名字
的 shell 脚本,当然前提是你的目录里要存在这个脚本。
$ fish-hook server
fish-hook 为你封装了部署所需的 web server 。一条命令即可启动,此时所有的 webhook 都会被启用。
centos 默认开启了端口防火墙,如果你使用了一些具备安全组的云主机服务,也需要开放所有安全组哦。
$ sudo firewall-cmd --zone=public --add-port=2333/tcp --permanent
screen -d -m fish-hook server
在fish-hook
主目录运行该命令,即可使 fish-hook server 持久运行下去。
请查看 github 仓库fish-hook
1
dcalsky OP |
2
kslr 2017-02-21 16:27:28 +08:00 via Android
需要开外网端口是很严肃一件事。
|
5
est 2017-02-21 16:41:45 +08:00
有那么麻烦么。。。
@app.route('/.secret_update') def secret_update(): import subprocess subprocess.Popen('git pull') # 再让进程自己重启一下就行了。 |
6
wobuhuicode 2017-02-21 17:57:55 +08:00
为了安全,麻烦点还是必须的……
|