Git用webhook实现自动更新网站
最近公司大部分项目从SVN过渡到Git。所以代码自动化部署也有了更多的想象空间。
之前使用SVN更新代码到开发环境的时候,都是用crontab
定时svn update
。间隔是一分钟,虽然一分钟不算长,甚至有时候等待并不需要这么久。
但是总归是无法做到及时更新。算是自动主动更新,而Git有webhook的存在,就可以做到触发式更新。
我们代码是放在 git.oschina.net 码云上。
原理
每次git提交的时候,都会触发webhook,webhook会访问我们设置的URL。
URL触发我们的更新代码。
所以,我们还需要架一个网站,提供一个webhook访问的URL,访问的时候触发代码。
实践
时间原因,轮子就不自己造了,所以,我找到一份还不错的webhook管理平台。
- git-webhook: https://github.com/NetEaseGame/git-webhook
安装git-webhook
环境: Centos7
这里用docker部署
1 | # 安装启动docker |
GITHUB: GitHub 登陆配置,可以到 OAuth applications 自行申请,登陆 Callback 地址为: your_domain/github/callback.
配置好后,就可以执行
1 | # docker-compose up |
第一次启动的时候会docker会pull几个需要的镜像,所以时间要长点。
以后启动的话,可以用docker-compose up -d
用deamon方式启动。
Nginx配置
启动后,docker 暴露出来的端口是 18340.访问的话,就是 http://ip:18340
所以我打算给它绑定一个域名,让它访问要更方便一点。
1 | server { |
至此git-webhook就安装好了。
用github账号登录进去,先添加服务器,再添加git仓库。得到的url填到git.oschina.net webhook那里就行了。
- 添加好项目后,在箭头方向复制URL
- 登录码云,填写URL到webhook那里