码云webhook自动更新脚本

6 篇文章 0 订阅
5 篇文章 0 订阅
<?php

/**
 * 自动更新钩子
 */

// 接收的信息
$json = $GLOBALS['HTTP_RAW_POST_DATA'];
$data = json_decode($json, true);

if ($data['state'] == 'merged' && $data['merge_status'] == 'can_be_merged') {

    //打开网站目录下的hooks.log文件 需要在服务器上创建 并给写权限
    $fs = fopen('./../../webhook/example.log', 'a');

    fwrite($fs, '================ Update Start ===============' . PHP_EOL . PHP_EOL);

    //自定义字串掩码 用于验证
    $access_token = '433b88e8d85291';

    $client_token = $data['password'];

    // 请求ip
    $client_ip = $_SERVER['REMOTE_ADDR'];

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

    //验证token 有错就写进日志并退出
    if ($client_token !== $access_token) {
        echo "error 403";
        fwrite($fs, "Invalid token [{$client_token}]" . PHP_EOL);
        $fs and fclose($fs);
        exit(0);
    }

    //如果有需要 可以打开下面,把传送过来的信息写进log
    fwrite($fs, 'Data: ' . print_r($data, true) . PHP_EOL);

    //执行shell命令并把返回信息写进日志
    exec('sudo -u www git pull origin master 2<&1', $output);
    fwrite($fs, 'Info:' . print_r($output, true) . PHP_EOL);

    fwrite($fs, PHP_EOL . '================ Update End ===============' . PHP_EOL . PHP_EOL);

    $fs and fclose($fs);

    echo json_encode($output);
}

  1. 将代码保存为webhook.php 文件
  2. 在码云上配置第二种图片的信息
  3. 将webhook.php文件放在服务器上面(必须保证浏览器可访问)
  4. 推送一个分支bfinger到码云,然后合并到master分支(不要推到master分支,最好设置master分支为只读/默认分支)
  5. 查看服务器上的日志文件(在代码第14行可设置保存位置)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值