gogs 實現webhook鉤子(php接口形式)

 

一、概要流程

 

二、準備工做

gogs服務器php

linux網站服務器(寶塔)linux

本地客戶端git

三、編寫鉤子訪問的接口

在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.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去掉,保存,重啓phpurl

錯誤2:sudo: no tty present and no askpass program specified
在寶塔上找到etc/sudoers 編輯 ,加入 %www ALL = NOPASSWD: ALLspa

錯誤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.git3d

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

五、配置到gogs鉤子去

點擊項目git主頁--》倉庫設置,--》在左側找到管理Web鉤子,--》添加鉤子--》輸入githook.php地址,其餘默認便可,點擊添加,有多個服務器就配置多個鉤子地址,客戶端一旦推送,會同時觸發

相關文章
相關標籤/搜索