利用webhook使php项目自动部署

1.先来讲一下自动部署的原理,一般在我们push代码的时候,可以自动请求webhook中设置的url,完成一次请求与响应。那么只要我们设置的url地址请求的php文件内容是执行命令行git push命令,则可以实现每次在本地push推送一次代码到远端,服务器就会自动git pull拉取最新的分支。

2.那么我们需要设置的就是两个地方:

①git项目的webhook设置:

一般在我们托管代码的平台,在项目设置里都会有一项webhook设置,里面一般只有一条内容,那就是url的设置,这里我设置的是http://www.xxxxx.com/webhook.php

(很明显,我在网站的根目录扔了一个webhook.php文件,那么每次我向远端推送代码的时候,我网站的webhook.php文件都会被访问到)

②服务器端(代码运行位置)的钩子文件(webhook.php)设置:

`$command` `=` `'cd 代码位置'``;`

`$output` `= shell_exec(``$command``);`

`$command` `=` `'git pull'``;`

`$output` `= shell_exec(``$command``);`

`print` `$output``;`

我这里就是简单的两句,先cd命令进入到相应目录,然后执行git pull命令

主要就是shell_exec()函数的使用,这个是php执行命令行的函数,同学们可以自己百度具体介绍

这里要特别说明的是,我之前执行shell_exec()命令的时候,服务器会无响应,卡死,于是我用一句

`$output` `= shell_exec(``'ls'``);`

`print_r(``$output``);`

指令测试,发现也超时,很奇怪,所以一直搁置来着,也想不明白怎么回事,毕竟就三五行代码,也不知道什么原因让它一直请求超时。后来过了两个月我想会不会是当初print的字符串编码问题?于是便有了下面的几句代码:

`$encode` `= mb_detect_encoding(``$output``,` `array``(``'ASCII'``,``'GB2312'``,``'GBK'``,``'UTF-8'``));`

`$trans` `= iconv(` `$encode``,` `"UTF-8"``,``$output``);`

`print` `$trans``;`

然后竟然可以执行了。。。我也想不起来之前到底是什么原因shell_exec()一直超时,又遇到的小伙伴可以试试不打印返回内容,或者将打印内容编码处理一下。不过相信遇到这个恶心问题的小伙伴还是少数。

Image placeholder
小牛
未设置
  10人点赞

没有讨论,发表一下自己的看法吧

推荐文章
beego 使用 coding 的 webhook 2.0 进行自动部署

beego使用coding的webhook2.0进行自动部署本文介绍beego在coding上如果使用webhook2.0进行自动部署。coding的webhook1.0教程coding平台端的设置这

怎么在react中使用weui

怎么在react中使用weui1、react没有安装的情况下:安装react和weuinpminstall--savereactreact-dom npminstall--saveweui@1.1.0

GoWeb教程_06.1. session 和 cookie

session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在浏览需要认证的服务页面以及页面统计中却相当关键。我们先来了解一下session和cookie怎么来的?考

GoWeb教程_08.0. Web 服务

Web服务可以让你在HTTP协议的基础上通过XML或者JSON来交换信息。如果你想知道上海的天气预报、中国石油的股价或者淘宝商家的一个商品信息,你可以编写一段简短的代码,通过抓取这些信息然后通过标准的

GoWeb教程_08.2. WebSocket

WebSocket是HTML5的重要特性,它实现了基于浏览器的远程socket,它使浏览器和服务器可以进行全双工通信,许多浏览器(Firefox、GoogleChrome和Safari)都已对此做了支

GoWeb教程_13.0. 如何设计一个 Web 框架

前面十二章介绍了如何通过Go来开发Web应用,介绍了很多基础知识、开发工具和开发技巧,那么我们这一章通过这些知识来实现一个简易的Web框架。通过Go语言来实现一个完整的框架设计,这框架中主要内容有第一

GoWeb教程_14.0. 扩展 Web 框架

第十三章介绍了如何开发一个Web框架,通过介绍MVC、路由、日志处理、配置处理完成了一个基本的框架系统,但是一个好的框架需要一些方便的辅助工具来快速的开发Web,那么我们这一章将就如何提供一些快速开发

react-native中IOS的webview和js层通信 - UIWebview

前言在9012的最后一篇写到了在rn中安卓的webview的通信原理,而作为0202年的第一篇,继续讨论上年rn中webview通信剩下的部分。背景:对于webview,了解过的人都知道在ios端会存

SpringBoot 集成 JWT 实现 token 验证,token 注销

什么是JWT Jsonwebtoken(JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC7519).定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形

理解 cookie、session、token、jwt

发展史 1、很久以前,Web基本上就是文档的浏览而已,既然是浏览,作为服务器,不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议,就是请求加响应,尤其是我不用记住是谁刚刚发了

使用 Docker 部署 Spring Boot 项目

Docker技术发展为微服务落地提供了更加便利的环境,使用Docker部署SpringBoot其实非常简单,这篇文章我们就来简单学习下。首先构建一个简单的SpringBoot项目,然后给项目添加Doc

GoWeb教程_12.0. 部署与维护

到目前为止,我们前面已经介绍了如何开发程序、调试程序以及测试程序,正如人们常说的:开发最后的10%需要花费90%的时间,所以这一章我们将强调这最后的10%部分,要真正成为让人信任并使用的优秀应用,需要

GoWeb教程_12.3. 应用部署

程序开发完毕之后,我们现在要部署Web应用程序了,但是我们如何来部署这些应用程序呢?因为Go程序编译之后是一个可执行文件,编写过C程序的读者一定知道采用daemon就可以完美的实现程序后台持续运行,但

专访被Facebook开除的中国工程师尹伊:我不后悔那天的决定

作者:纪振宇9月19日,在美国加州刺眼的午后阳光下,38岁的Facebook陈姓中国工程师,从该公司位于加州门罗帕克总部园区的某处办公楼的四层纵身一跃,结束了自己的生命。随后,关于他更多的消息逐渐在网

Facebook数据再泄露 5.4亿数据曝光于AWS服务器

网络安全公司UpGuard最近的一份报告显示,两家第三方Facebook应用程序开发商被发现以公开的方式将用户数据存储在亚马逊的云服务器上。据UpGuard称,其中一家公司CulturaColecti

使用Jupyter NoteBook进行IB查询和交易,以及使用算法交易示例

在搞好IB盈透接口后,试了下客户端交易,但是最终目的还是使用程序化交易。发现vnpy已经提供的Script_engine来支持JupyterNoteBook交易的,而且非常方便调用。 这里就用写了基于

重回榜首!Facebook开源加强版BERT,全面超越XLNet

大数据文摘出品作者:宁静刚刚被拉下神坛的BERT又一次称霸了GLUE、SQuAD和RACE三个排行榜。今年六月,谷歌发布XLNet,指出并解决了BERT的缺点,在20多个指标上全面刷爆了BERT之前的

Libra:Facebook的”野心”?

2008年11月1日,有一个传说叫中本聪的日裔美国人,发表了一篇名为《比特币:一种点对点式的电子现金系统》的论文。2009年,比特币出世,从此开启了电子货币这个收割机器,全世界的韭菜都是一个味。200

Facebook又叒陷数据门,5亿条数据不安全存储在亚马云服务器中

大数据文摘出品编译:周素云上周Facebook用户又经历了糟糕的一周。Facebook发言人对各大主流媒体承认,用户的多组个人数据被存放在亚马逊AWS数据库中,包括数以百万计的Facebook用户的超

深入浅出 JSON Web Token

JSONWebToken原理 Web应用可分为客户端和服务端,这两者之间经常需要进行身份认证。 由于HTTP是无状态协议,不能保存认证后的用户状态,因此,每一次发送请求都需要重复的进行认证。 为了

API 系列 - 深入浅出 JSON Web Token

原理Web应用可分为客户端和服务端,这两者之间经常需要进行身份认证。由于HTTP是无状态协议,不能保存认证后的用户状态,因此,每一次发送请求都需要重复的进行认证。为了解决该问题,通常会使用Cookie

SpringBoot 中的 Servlet Web 容器

1.前言 SpringBoot支持一下嵌入式Servlet容器: SpringBoot2.0.3.RELEASE需要Java8或9以及SpringFramework5.0.7.RELEASE或更高版本

Spring Boot 中的响应式编程和 WebFlux 入门

Spring5.0中发布了重量级组件Webflux,拉起了响应式编程的规模使用序幕。WebFlux使用的场景是异步非阻塞的,使用Webflux作为系统解决方案,在大多数场景下可以提高系统吞吐量。Spr

React Hooks 完全指南,读React作者博文感悟(2W字精华)

阅读facebook大佬:DanAbramov的文章颇有感悟大佬github地址https://github.com/gaearon 重点总结 useEffect是同步的 状态是捕获的当前props

使用 ivx 开发 web 全栈项目

前言 本人是一枚喜欢探索黑科技的web前端,没事喜欢研究研究框架,了解网络技术/工具等等。最近在研究saas和paas的时候在知乎专栏有大佬提到了一款在线页面编辑系统——ivx。看到这里在做的大佬估