webhook实现git代码自动部署
偷些懒吧,如果参考以下博文能成功部署的,后面就不用看了。
如果自动部署失败,请检查以下情况:
git ssh
密钥是否正确hook
文件是否能从外网地址访问到,是否有可执行权限php.ini
配置文件中是否禁用shell_exec
方法(查找disable_functions
关键词)- 绑定的
web
目录所属的用户及组是否与git
执行命令时所使用的用户组一致
php hook
文件参考示例:
<?php
error_reporting(1);
$target = '/home/wwwroot/example.com';
$token = 'coding_example';
$json = json_decode(file_get_contents('php://input'), true);
if (empty($json['token']) || $json['token'] !== $token) {
exit('error request');
}
//$output = shell_exec("sudo -Hu www cd $target && git pull");
$output = shell_exec("cd $target && git pull");
//echo '<pre>'.$output.'</pre>';