赞
踩
一:安装git服务
- // 查看是否安装了git
- git --version
-
- // 如果未安装,执行安装命令
- yum install git
2:编写同步PHP脚本
- <?php
- //理发店钩子
- error_reporting(1);
- set_time_limit(0);
- // 部署目录
- $target = '/www/wwwroot/haircutapp';
- // 部署密钥
- $password = '123456';
- // 部署分支
- $branch = 'master';
-
- // git 地址
- $giturl = "https://gitee.com/xxx/xxss.git";
-
- if(!file_exists($target)){
- // 如果目录不存在 就clone 一个
- $basedir = dirname($target) ;
- $cmd = "(cd $basedir && git clone $giturl ) 2>&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:如果使用密码的方式,需要再码云后端设置一下密码就可以了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。