最近一直在研究如何把在把代码 Push 到 Coding 上时能够实现自动部署最新代码到服务器上,解决方案就是利用 Coding 提供的 WebHook(其他 Git 仓库也应该有类似的功能)。
Webhook 允许第三方应用监听 Coding.net 上的特定事件,在这些事件发生时通过 HTTP POST 方式通知( 超时5秒) 到第三方应用指定的 Web URL。 例如项目有新的内容 Push,或是 Merge Request 有更新等。 WebHook 可方便用户实现自动部署,自动测试,自动打包,监控项目变化等。
当发生 Push 等事件时,Coding 会向一个用户设置的 URL发送一条 POST 请求,那么就可以把这个 URL指向一个PHP文件,而在这个 PHP文件中则可以执行一个 Pull Git 仓库的脚本~
但这期间也踩了不少坑,故总结分享一下。
先说一下我的服务器环境配置:
- PHP 5.6。低于这个版本的在通过 PHP 调用 Shell 脚本时默认是没有权限的,需要在 PHP 的配置文件中修改,请自行搜索相关方法。
- Nginx 服务器。Apache 服务器的部分细节可能和我的不同,我不是很了解~
太长不看版
我遇到的问题主要是权限问题,解决方案:
- 给
/www
目录 755 权限,使www
用户对网站目录有写权限。 - 使用
www
用户来克隆 Git 仓库,以避免 PHP (www 用户)没有权限