git上传码云代码同步服务器

1.码云创建项目。

git上传码云代码同步服务器

 

2.本地git获取项目

git上传码云代码同步服务器

3.入口处添加hooks.php文件,内容如下:

<?php

$json = file_get_contents("php://input");
$data = json_decode($json,true);
if (isset($data['ref']) && $data['total_commits_count']>0) {
    $res = PHP_EOL."pull start ---------------------------------------------".PHP_EOL;
    $res .= shell_exec("cd /home/wwwroot/git/appointment/ && git pull");
    $res_log = '------------------------------------------------------------'.PHP_EOL;
    $res_log .= $data['user_name'] . ' 在' . date('Y-m-d H:i:s') . '向' . $data['repository']['name'] . '项目的' . $data['ref'] . '分支push了' . $data['total_commits_count'] . '个commit:'.$data['commits']['message'];
    $res_log .= $res.PHP_EOL;
    $res_log .= "pull end -----------------------------------------------------".PHP_EOL;
    file_put_contents("/home/wwwlogs/webhook/".date('Y-m-d',time()).".txt", $res_log, FILE_APPEND);//写入日志到log文件中
}
?>

标红为项目目录和日志目录。

 

4.码云上添加WebHooks

git上传码云代码同步服务器

4.服务器上git pull 项目。

这边要注意查看项目拥有者

git上传码云代码同步服务器

还有查看php的拥有者

git上传码云代码同步服务器

如果不同,shell_exec运行不了,项目就无法同步服务器了。要改成一致,chown lsm appointment -R。这样就可以同步了