GITEE--webhooks自动化部署更新


createtime 20220517

updatetime 20220517

author venki.chen


GITEE 配置

在这里插入图片描述

注意事项

  • 以仓库为单位进行配置!!!
  • 可以按照官方的要求进行配置。
WEBHOOK钩子编写
<?php
/**
 * 自动更新钩子
 * 修改密钥及项目路径即可使用
 **/

//以流的方式读取
$requestBody = file_get_contents("php://input");
if (empty($requestBody)) {
    die('send fail');
}

//file_put_contents('./requestBody.log', $requestBody);

$requestBody = json_decode($requestBody, true);


//加密字符串
//$secret_post = $requestBody['sign'];

//时间戳参数,单位毫秒级
//$time_stamp = $requestBody['timestamp'];

//在WebHooks签名密钥一栏填写的密钥信息
$access_token = $requestBody['password'];

//加密文档
//https://gitee.com/help/articles/4290
//$secret_join = $time_stamp . "\n" . $access_token;

//file_put_contents('./join.log', $secret_join);

//$base64 = base64_encode(hash_hmac('sha256', $secret_join, $access_token, true));

//file_put_contents('./base64.log' , $base64);

//看推送的是哪个分支就构建哪个分支
//如有需要可以更改规则,比如屏蔽某些分支不构建
$branch = str_replace('refs/heads/', '', $requestBody['ref']);

$requestBody = null;

// 打开网站目录下的hooks.log文件 需要在服务器上创建 并给写权限
$file_name = date('Y-m-d') . '_' . 'webhook.log';
$fs = fopen("/home/ol/webhooks/$file_name", 'a');

fwrite($fs, date('Y-m-d H:i:s') . ' ================ Update Start ===============' . PHP_EOL);// 请求ip
$client_ip = $_SERVER['REMOTE_ADDR'];

// 把请求的IP和时间写进log
fwrite($fs, date('Y-m-d H:i:s') . ' Request on [' . date("Y-m-d H:i:s") . '] from [' . $client_ip . ']' . PHP_EOL);

// 验证token 有错就写进日志并退出
if ($access_token !== '123456') {
    fwrite($fs, date('Y-m-d H:i:s') . " Invalid token [{$access_token}]" . PHP_EOL);

    $fs and fclose($fs);

    header("HTTP/1.1 404 Not Found");

    header("Status: 404 Not Found");

    exit;
}

// 如果有需要 可以打开下面,把传送过来的信息写进log 可用于调试,测试成功后注释即可
//fwrite($fs, 'Data: ' . print_r($data, true) . PHP_EOL);

// 执行shell命令并把返回信息写进日志
if ($branch == 'master') {
    $branch = 'master';
} elseif ($branch == 'test') {
    $branch = 'test';
} elseif ($branch == 'feature') {
    $branch = 'feature';
} elseif ($branch == 'release') {
    $branch = 'release';
} else {
    $branch = 'develop';
}

// 项目目录
$output = shell_exec('cd /home/ol/app/build_base_laravel/; git pull origin ' . $branch . ' 2<&1; chown -R www:www /home/ol/app/build_base_laravel/*;');


fwrite($fs, date('Y-m-d H:i:s') . 'Info:' . print_r($output, true) . PHP_EOL);
fwrite($fs, date('Y-m-d H:i:s') . '================ Update End ===============' . PHP_EOL . PHP_EOL);
$fs and fclose($fs);

// 调试时打开
echo json_encode($output);
错误收集

权限问题

  • 一般权限问题,均可以通过chmod -R 777 解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈文小超_自律

努力自己,幸福他人

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值