#Gitee 的 WebHooks 实现代码自动化部署#

1:安装git
2:php同步脚本
3:配置webhook

一:安装git服务

// 查看是否安装了git
git --version

// 如果未安装,执行安装命令
yum install git

2:编写同步PHP脚本

&1 ";
    shell_exec($cmd);
    chmod($target,0777) ;
}
// token判断




// 分支判断
$arr = file_get_contents('php://input', 'r');
$arr = json_decode($arr, true);
if (JSON_ERROR_NONE !== json_last_error()) {
    die("解析json失败");
}

// 验证提交密码是否正确
if (!isset($arr['password']) || $arr['password'] !== $password) {
    echo '密码错误';
    exit(0);
}

$ref = isset($arr['ref']) ? $arr['ref'] : die("没有分支信息");
$ref = explode('/', $ref);
$ref = array_pop($ref);
if ($branch != $ref) {
    die("同步失败:不是分支" . $branch);
}

$cmd = "(cd $target && git pull ) 2>&1 ";
echo shell_exec($cmd);
$res_log = "---------------------------------------------------------------" . PHP_EOL;
$res_log .= PHP_EOL . "pull start ---------------------------------------------" . PHP_EOL;
$res_log .= '------------------------------------------------------------' . PHP_EOL;
$res_log .= '-----------当前时区:' . date_default_timezone_get();
$res_log .= $arr['user_name'] . ' 在' . date('Y-m-d H:i:s') . '向' . $arr['repository']['name'] . '项目的' . $arr['ref'] . '分支push了' . $arr['total_commits_count'] . '个commit:';
$res_log .= '------------------------------------------------------------' . PHP_EOL;
$res_log .= "pull end -----------------------------------------------------" . PHP_EOL;
file_put_contents("/www/wwwroot/webhook.yanghaifeng.top/logs/" . date('Y-m-d', time()) . ".txt", $res_log, FILE_APPEND);//写入日志到log文件中

echo '很棒:'.date('y-m-d H:i:s');

?>
    

3:如果使用公钥方式,需要配置一下公钥

  • 配置公钥
  • 首先查看服务器上是否已经存在公钥 id_rsa.pub 文件
  • 如果存在,直接复制里面的内容,如果不存在,先生成
// 查看是否由公钥文件
ll ~/.ssh/

// 如果存在公钥,则执行
cat ~/.ssh/id_rsa.pub

// 如果不存在,则重新生成
ssh-keygen -t rsa

4:如果使用密码的方式,需要再码云后端设置一下密码就可以了

#Gitee 的 WebHooks 实现代码自动化部署#_第1张图片

 

你可能感兴趣的:(gitee,自动化,elasticsearch)