git webhooks 上线过程记录(php)
说明
- git仓库使用的
git.oschina.net
- 先配置
部署公钥
,部署公钥配置后的机器,只支持clone与pull等只读操作,需要注意的是该公钥需要在对应的用户下生产,例如我的就是在nginx用户下生成的 - 环境 linux+nginx
克隆代码
在服务中首次克隆仓库代码
$ git clone "[email protected]:***/w******.git"
git平台设置webhooks
更新脚本
php
位置:/update.php
<?
ignore_user_abort(TRUE);
$hook = isset($_POST["hook"]) ? json_decode($_POST["hook"],TRUE) : array();
if(!isset($hook['password']) || $hook['password'] != "自己设置的密码"){
exit("password error");
}
shell_exec('./update.sh');
file_put_contents('./update.log.php',date('Y-m-d H:i:s').' 代码上线'."\n",FILE_APPEND);
?>
shell
位置:/update.sh
#!/bin/bash
cd /html/www # 网站目录(git目录)
git pull origin master
注意事项
- SSH公钥在生成时注意生成用户
- 在git配置文件中设置忽略文件权限修改,不然容易产生冲突
- 注意设置.git目录的权限