zoukankan      html  css  js  c++  java
  • gogs 实现webhook钩子(php接口形式)

     

    1、概要流程

    2、准备工作

    gogs服务器

    linux网站服务器(宝塔)

    本地客户端

    3、编写钩子访问的接口

    在public下新建githook.php文件,代码如下:

    <?php
    $cmd = "cd  /www/wwwroot/testfc/pro/  && git reset --hard origin/master && sudo git pull origin master 2>&1";
    $res = array();
    exec($cmd,$res);
    var_dump($res);

    有多台服务器就每个服务器的网站public下都加这个,然后配置到gogs服务器去

    4、测试接口

    4.1 先把cmd命令换成 $cmd = "cd /www/wwwroot/testfc/pro/ sudo git pull origin master 2>&1"; 测试下
      var_dump($res); 打印出错误

    可能会出现以下错误:

    错误1:Warning: scandir() has been disabled for security reasons in…
    原因:LNMP 0.9禁用了部分存在危险的PHP函数,当前是exec无法执行
    找到php版本,修改配置信息,搜索 disable_functions 把它后面的 exec去掉,保存,重启php

    错误2:sudo: no tty present and no askpass program specified

               或者这个错误 We trust you have received the usual lecture from the local System
    在宝塔上找到etc/sudoers 编辑 ,加入 %www ALL = NOPASSWD: ALL

    错误3:fatal: could not read Username for
    找到项目 .git/config文件夹 /www/wwwroot/testfc/pro/.git/config
    在ip前面加上用户名与密码格式如: url = http://username:psd@xxx.xxx.xxx.xxx:3000/aaa/pro.git

    错误4:执行完接口每次都会出现一堆已更新的东西

    打开终端,cd 到项目 根目录,执行 git pull --all    然后再执行 你脚本内的那个  git  pull origin  xxx(你要固定拉取的分支名)即可,然后再执行就会出现

    ************有看到 Already up-to-date 字眼表示测试成功,把cmd改回去

    5、配置到gogs钩子去

    点击项目git主页--》仓库设置,--》在左侧找到管理Web钩子,--》添加钩子--》输入githook.php地址,其他默认即可,点击添加,有多个服务器就配置多个钩子地址,客户端一旦推送,会同时触发

  • 相关阅读:
    Linux-shell-算术运算{expr、bc、dc、(( ))和[ ]}
    [SHELL]:let 命令详解
    23-tcp协议——TIME_WAIT状态和FIN_WAIT2状态
    ethtool -p eth0 物理口一个灯在不停的闪烁
    PXE
    UID, EUID, SUID, FSUID
    echo $[1 + 2] shell中 $[] 在bash中同$(()),用于算术计算
    Cocos2d入门--3-- 向量的应用
    Cocos2d入门--2-- 三角函数的应用
    Cocos2d入门--1-- 初涉相关属性或代码
  • 原文地址:https://www.cnblogs.com/wdw31210/p/11009968.html
Copyright © 2011-2022 走看看