美文网首页
gitlab的 webhook

gitlab的 webhook

作者: sorry510 | 来源:发表于2020-04-27 22:26 被阅读0次
    1. 找到webhook配置页面


      1587095127(1).jpg

      实例php脚本,自动拉取最新代码

    <?php
    
    $www_file = __DIR__;
    // 打开网站目录下的hooks.log文件,需要在服务器上创建,并给写权限
    $fs = fopen($www_file . DIRECTORY_SEPARATOR . 'hook.log', 'a');
    
    fwrite($fs, '================ Update Start ===============' . PHP_EOL . PHP_EOL);
    
    // 自定义字串掩码 用于验证
    $access_token = 'jtUmpo3ySTAZG1cuIDd4Kwbn2OYqigvXazCk';
    // 接受的ip数组,也就是允许哪些IP访问这个文件 这里是gitlab服务器IP
    $access_ip = ['192.168.1.90', '171.15.109.36', '192.168.1.80'];
    
    // header解析会加上HTTP前缀同时转-为_
    $client_token = $_SERVER["HTTP_X_GITLAB_TOKEN"];
    $client_ip = $_SERVER['REMOTE_ADDR'];
    if (!$client_token) {
        $client_token = $_REQUEST['X-Gitlab-Token'];
    }
    
    // 把请求的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);
        exit(0);
    }
    
    // 验证ip
    if (!in_array($client_ip, $access_ip)) {
        echo "error 503";
        fwrite($fs, "Invalid ip [{$client_ip}]" . PHP_EOL);
        exit(0);
    }
    
    
    // 获取请求端发送来的信息,具体格式参见gitlab的文档
    // $json = file_get_contents('php://input');
    // $data = json_decode($json, true);
    //如果有需要 可以打开下面,把传送过来的信息写进log
    # fwrite($fs, 'Data: '.print_r($data, true).PHP_EOL);
    
    //执行shell命令并把返回信息写进日志
    $output = shell_exec("cd {$www_file} && git pull 2>&1"); // 
    fwrite($fs, 'Info:' . $output . PHP_EOL);
    
    fwrite($fs, PHP_EOL . '================ Update End ===============' . PHP_EOL . PHP_EOL);
    
    $fs and fclose($fs);
    
    1. 在页面中填写hook的url地址和token
      token以header的形式传送给url地址,url地址中你需要填写编写具体的逻辑代码,比如让代码自动拉取到最新(只要你想的到,没有做不到),事件可以根据需求自由选择


      image.png
    2. url地址默认情况下不可填写本地地址,需要用管理员账号登录,修改设置


      1.png
    3. 设置完成后可以点击test按钮进行相关测试
    4. 编写的脚本需要注意操作系统的用户权限问题,请注意解决

    相关文章

      网友评论

          本文标题:gitlab的 webhook

          本文链接:https://www.haomeiwen.com/subject/qesevhtx.html