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地址,其他默认即可,点击添加,有多个服务器就配置多个钩子地址,客户端一旦推送,会同时触发

gogs 实现webhook钩子(php接口形式)的更多相关文章

  1. Gogs 设置Git钩子实现项目自动部署

    每次修改代码需要上传到 git仓库,查看了一下 Gogs 使用文档 发现有 web钩子 这个选项,然后发现了本地可实现的 Git钩子. 注意:需要用到管理员帐号登录,进行仓库的设置. 有三种状态分别是 ...

  2. WebHook钩子

    webhooks整理码云创建远程仓库生成公钥 服务器配置webhooks #!/bin/bashecho ""#输出当前时间date --date='0 days ago' &qu ...

  3. .NetCore基于Jenkins和Gogs的自动化部署方案

    准备工作 Jenkins和gogs的安装配置可以看前两篇:Jenkins安装.配置与说明  和 gogs安装与说明(docker) 此外,因为还要安装.net core的SDK和Git工具: 安装.n ...

  4. Drone 持续集成实践 - 基于 Gogs,以 Golang 为例

    Drone 官方示例 - Example Go project 用 Docker 部署 Go 服务器 Golang 官方示例 - outyet 一个生产环境的例子 用 rsync 复制文件的方式进行部 ...

  5. Gogs+Jenkins+Docker 自动化部署.NetCore

    环境说明 腾讯云轻量服务器, 配置 1c 2g 6mb ,系统是 ubuntu 20.14,Docker 和 Jenkins 都在这台服务器上面, 群晖218+一台,Gogs 在这台服务器上. Doc ...

  6. 基于Jenkins Pipeline的ASP.NET Core持续集成实践

    最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...

  7. Jenkins 结合 Docker 为 .NET Core 项目实现低配版的 CI&CD

    随着项目的不断增多,最开始单体项目手动执行 docker build 命令,手动发布项目就不再适用了.一两个项目可能还吃得消,10 多个项目每天让你构建一次还是够呛.即便你的项目少,每次花费在发布上面 ...

  8. jenkins 安装成功之后配置

    一.基础配置介绍 jenkins安装成功之后如果某些东西配置的话,可能部署的时候一堆的问题,所以单独总结一下,让大家少走弯路 二.准备工作 1.需要准备一台服务器,大家可以在网上买,个人学习的话还是建 ...

  9. Jenkins-gogs安装及使用

    很多同学可能第一次了解什么是ci-cd,什么是Jenkins,首先会介绍下cicd的概念及应用场景,之后再详细介绍下Jenkins的概念.安装及使用. 什么是CI-CD? 首先明确CI-CD是一种技术 ...

随机推荐

  1. 批量导入数据到InnoDB表速度优化

    1.使用Load data: 2. SET autocommit=0; ... SQL import statements ... COMMIT; 3. SET unique_checks=0; .. ...

  2. c# Match类

  3. Linux命令——sync

    参考:A Step-By-Step Guide to Using the Linux sync Command 前言 数据只有被读入内存才能被CPU所处理,但是数据又常常需要由内存写回磁盘当中(例如储 ...

  4. [MySQL] 行级锁SELECT ... LOCK IN SHARE MODE 和 SELECT ... FOR UPDATE

    一.译文 翻译来自官方文档:Locking Reads If you query data and then insert or update related data within the same ...

  5. c++第五次作业

    运算符重载 一.运算符重载基本规则 1.运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同的行为. 2.一般来讲,重载的功能应当与原有功能相似,不能改变原运算符的操作 ...

  6. 国际化(i18n) 各国语言缩写

    internationalization (国际化)简称:i18n,因为在i和n之间还有18个字符,localization(本地化 ),简称L10n. 一般用语言_地区的形式表示一种语言,如:zh_ ...

  7. 《少年先疯队》第九次团队作业:Beta冲刺与团队项目验收

    博文简要信息表: 项目 内容 软件工程 https://www.cnblogs.com/nwnu-daizh/ 本次实验链接地址 https://www.cnblogs.com/nwnu-daizh/ ...

  8. Jinja2 笔记

    注释: {# haha #} 对象引用 : {{data.name}}  或者 {{data['name]}} 控制语句放到{%  %}中 {% if not has_in_gifts and not ...

  9. 什么是好的产品——Diet Rams的十大设计原则

    博朗(BRAUN)的首席设计师Diet Rams的十大设计原则 第一条,好的产品是有创意的,它必须是一个创新的东西: 第二条,好的产品是有用的,一定要对人有用: 第三条,好的产品是优美的,它必须有美感 ...

  10. 移动端videojs视频插件使用直播流rtmp、hls、http-flv的注意事项

    可以访问:https://videojs.com/ 下载对应的脚本包 特别注意的是 移动端videojs一般应用的直播流协议为HLS, RTMP协议一般是PC上使用,需要flash支持. HLS直播源 ...