最近几天在做Ghost的主题Adam,但是想要在远程调试就必须得ssh到服务器执行一下命令,光是cd path/to/theme
就够烦了。于是想办法是否能让服务器自动从github上面pull代码,然后自动执行自定义命令让代码生效。
让服务器自动部署主题命令有两个方法:
-
用Crond执行周期任务,比如1分钟去git取一次。但是这样实时性其实并不那么好,并且如果任务所需负载较大(我就是这种情况,因为主题需要用Grunt跑一堆命令才能生效),那就更无法接受了。
-
用GitHub webhooks监听GitHub发来的HTTP POST请求。
但是网上关于webhooks的资料实在是少之又少,中文的也基本上没有。自己也是弄了半天才搞明白,原谅我不是做web的吧,我只是一个手游客户端程序员 :D
详细资料可以在GitHub Developer API Webhooks找到。这里之做一些简单的说明。
GitHub Webhooks是怎么工作的?
设置钩子
在GitHub上,每个仓库(repository)都可以设置一个或多个自己专属的钩子,且每个钩子都可以设置独立的触发事件(Events)。
这里列举两个事件:
push | 仓库有push时触发。默认事件 |
create | 当有分支或标签被创建时触发 |
delete | 当有分支或标签被删除时触发 |
下面讲一下webhooks的设置
- Payloads URL:当事件被触发时,GitHub会将POST请求发送至改地址。
- Content type:数据格式。
- Secret: 用作给POST的body加密的字符串。采用HMAC算法。 HMAC hex digest of the body, using the secret as the key
事件内容
Headers中:
X-Github-Event | 触发POST请求的事件名称。 |
X-Hub-Signature | 用设置的Secret加密的哈希(如果有设置secret的话) |
X-Github-Delivery | 本次POST的全局ID(UID) |
body中的内容,由事件不同而不同,就不做赘述了。具体可以看event types。
怎么使用hooks?
其实上面说了那么多,要使用钩子其实很简单。
- 在仓库的settings中添加一个钩子。
- 设置Payloads URL为你准备监听的地址,比如
http://fancycoding.com:1234
。 - 如无必要,可以不设置secret加密。
- 选择监听的事件类型,我只需要监听push,所以默认即可。
- 如果你需要监听到事件后执行git命令,记得把key加入仓库的Deploy keys中。(此步骤根据个人需要可选)。
- 自己写一个监听程序,解析header判断事件,然后执行你自己想要的命令吧。
嗯,第六步虽然说着简单但是还是要折腾一番。我折腾了大半天弄了个基于nodejs的监听程序Cherry-hooks,很简单,但足够我的情景用了。
相关推荐
这是一个模拟 github webhooks 的应用程序。 您选择一个包含 JSON 有效负载数据的文件,然后将其发送到给定的目标。 我可以在哪些场景下使用这个东西? 您可以使用它在本地主机上测试持续集成工具。 这很好,因为...
本项目"autodeploy:Erlang REST 服务器接受 GitHub webhooks 并自动部署应用程序"正是这样一个自动化解决方案,利用Erlang编程语言构建了一个RESTful API服务器,该服务器能够监听GitHub的webhook事件,并根据接收到...
该项目旨在使用从GitHub webhooks服务接收的事件流。 这个怎么运作 当事件发生时,GitHub会通知您的HTTP服务器,然后服务器将这些事件写到Kafka。 这就是现在所做的全部。 我们可能会添加处理。 但是,如果您想...
该应用程序允许您从Github自动部署Runit服务。 设置deploy_to_runit 第一步是分叉此项目。 当您合并主存储库中的更改时,这使您可以具有deploy_to_runit自动更新。 这也是如何设置自己的项目的一个很好的例子。 ...
ghost-on-github-pages, 几分钟后,Ghost在Github页面上免费构建和部署 Ghost 在Github页面上的 Ghost Ghost 是一个完全开放的开源平台,用于构建和运行现代在线出版物- 一个完整的专业发布平台。 现在你可以在几...
这个项目“discord-github”专注于实现一个功能,即当在GitHub上发生特定事件时(如代码提交、拉取请求、问题创建等),能够自动将这些事件的通知通过Webhooks的形式发送到Discord聊天平台。这为开发者提供了一种...
一个使用GitHub webhooks将漂亮的消息发布到您选择的IRC频道的jellyrific IRC机器人。 将其设置为您的存储库(或组织!)上的webhook并发送所有事件。 不要忘记将config.example.json复制到config.json并根据自己的...
github自动部署使用Webhooks将GitHub的部署自动化到您的服务器入门首次登录到您的服务器(要部署到的服务器) git clone ...运行install.sh脚本应在主目录上创建.github-auto-deployer目录,现在转到该目录并完成一些...
GitHub Webhooks API v3的一组测试装置 概述 该库提供了一组固定装置,可用于测试启用了GitHub webhooks API的应用程序。 提供的固定装置提供了webhooks API提供的示例标头和主体对象。 用法 var webhooks = ...
从GitHub部署您的Ghost主题 此使您可以自动构建和部署通过Ghost Admin API从GitHub到任何安装!入门 :light_bulb: 此操作期望您已经具有运行至少v2.25.5的Ghost安装。 通过在Ghost Admin»集成中配置新的“自定义...
Jenkins+Git+github 自动化部署
webhooks 使用node服务器1. 准备自动发布的项目... 设置github webhooks Settings -> Webhooks -> Add webhook -> Payload URL (指向deploy.js项目) -> Secret (设置一个密钥,deploy.js中使用) -> Add webhook
通过熟悉和掌握Actions的基本概念和配置方法,你可以轻松地实现博客或其他项目的自动部署,提升开发效率和团队协作体验。随着GitHub Actions的普及,越来越多的开发人员将其作为构建自动化工作流的首选方案。
主要介绍了使用 Github Actions 自动部署 Angular 应用到 Github Pages,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
Github-Webhook 简单的Api处理GitHub Webhooks并将它们漂亮地重定向到Discord入门: 在服务器上克隆存储库: git clone https://github.com/jxstxn1/Github-Webhook.git 习惯使用的依赖项: npm i 在github类的hook...
gh用于GitHub服务的命令和软件包。 安装〜$ go get -u github.com/rjeczalik/gh webhook软件包webhook为GitHub Webhooks实现了中间件。 用户为GitHub服务提供ghgh命令和程序包的webhook服务对象。 安装〜$ go get -u...
水烟筒 Hookah是GitHub Webhooks的简单服务器,可将hooks消息转发到任何一系列脚本,包括PHP,Ruby,Python甚至是直接的shell。 它只是将消息传递到任何脚本的STDIN。安装从来源Building v2需要Go模块支持,可以在Go...
lambda-webhook-demo 一个小的Rust程序,使用AWS Lambda和API Gateway处理GitHub Webhooks要求musl-tools部署方式要使用AWS CLI将Webhooks处理程序部署为Lambda函数,首先需要在构建环境中添加x86_64-unknown-linux-...
Github2Trello支持来自github的push和pull_request webhooks。 pull_request : pull_request事件会将您的trello卡移动到Trello中指定的拉取请求列表中。 push : push事件将在指定的Trello卡上创建注释,其中...