初始化
install git -y //安装git
yum install expect -y //免询问扩展
cat /etc/passwd | grep ^www: | awk -F : '{print $6}'//查询www所在目录
git config --global user.name "git用户名"
git config --global user.email "git用户名"
sudo -u www ssh-keygen -t rsa -f /home/www/.ssh/id_rsa -N ''//生成公钥
chown -R www:www /home/www/.ssh//修改文件所有者
git相关修改
//cd到项目目录只克隆.git 文件
sudo -u www git clone --no-checkout 项目地址
mv -f "项目目录中克隆的项目目录/.git" 项目目录 //移动
rm -rf "项目目录中克隆的项目目录" //删除
sudo -u www git reset --hard origin/master //切换成master分支
chown -R www:www 项目目录 //更换项目所有者
hook.php
<?php
error_reporting(1);
$data=file_get_contents("php://input");
$path="项目路径";
$token="4e31de2afe778a57e846189b71cfd731a9f1f94c";
$content=json_decode($data,true);
if($content['password']==$token){
if($content['ref']=="refs/heads/master" && $content['total_commits_count']>0){
$res=shell_exec("cd {$path} && git reset --hard origin/master && git pull && git checkout -f master && chown -R www:www {$path}");
$res_log="-----------".PHP_EOL;
$res_log.=$content['user_name']."(用户信息:".json_encode($content['user']).")"."在".date('Y-m-d H:i:s');
$res_log.="向".$content['project']['name']."(".$content['project']['full_name'].")项目push了".$content['total_commits_count']."条记录".PHP_EOL;
if(!is_dir('log')){
if(!file_exists("log")){
mkdir("log");
}
}
$file = "./log/hook";
if(!is_dir($file)){
if(!file_exists($file)){
mkdir($file);
}
}
$file = $file."/hook_".date('Y-m-d').".log";
$open=fopen($file,"a" );
fwrite($open,$res_log);
fclose($open);
}
}