说明

  1. git仓库使用的git.oschina.net
  2. 先配置部署公钥,部署公钥配置后的机器,只支持clone与pull等只读操作,需要注意的是该公钥需要在对应的用户下生产,例如我的就是在nginx用户下生成的
  3. 环境 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

注意事项

  1. SSH公钥在生成时注意生成用户
  2. 在git配置文件中设置忽略文件权限修改,不然容易产生冲突
  3. 注意设置.git目录的权限