webhook

webhook

Go语言编写的轻量级HTTP端点创建工具

webhook是一个Go语言开发的轻量级工具,用于在服务器上创建HTTP端点执行指定命令。它能从HTTP请求传递数据,设置触发规则,适用于代码托管平台的自动部署和通讯工具的命令执行。webhook专注于请求处理、数据解析、规则检查和命令执行,为开发者提供灵活的webhook配置方案。

webhookHTTP endpointsGo自动化部署服务器管理Github开源项目

什么是webhook? 构建状态

<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/5b0958ce-6dee-4d4b-9068-92cf42ff4261.png" alt="Webhook" align="left" />

webhook是一个用Go编写的轻量级可配置工具,它允许您在服务器上轻松创建HTTP端点(钩子),您可以用它来执行配置的命令。您还可以将HTTP请求中的数据(如头部、负载或查询变量)传递给您的命令。webhook还允许您指定必须满足的规则,以触发钩子。

例如,如果您使用Github或Bitbucket,您可以使用webhook设置一个钩子,每当您向项目的主分支推送更改时,该钩子就会在您的暂存服务器上运行项目的重新部署脚本。

如果您使用Mattermost或Slack,您可以设置"传出webhook集成"或"斜杠命令"来在您的服务器上运行各种命令,然后可以使用"传入webhook集成"或适当的响应体直接向您或您的频道报告。

webhook的目标是只做它应该做的事,即:

  1. 接收请求,
  2. 解析头部、负载和查询变量,
  3. 检查是否满足钩子的指定规则,
  4. 最后,通过命令行参数或环境变量将指定的参数传递给指定的命令。

其他一切都是命令作者的责任。

不是您在找的东西?

<a href="https://www.hookdoo.com/?github"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/c5bb3b21-e4c1-4441-b849-11a62e61d8dd.png" height="48" alt="hookdoo" /></a><a href="https://www.hookdeck.com/?ref=adnanh-webhook"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/a2e7aeae-76cc-434b-9926-ad61610098c8.svg" height="17" alt="hookdeck" /></a>
可脚本化的webhook网关,安全地在您的服务器上运行自定义构建、部署和代理脚本。无需来回排查,即可检查、监控和重放webhook。

入门

安装

从源代码构建

首先,确保您已正确设置了Go 1.14或更新版本的环境,然后运行

$ go build github.com/adnanh/webhook

以构建最新版本的webhook

使用包管理器

Snap商店

从Snap商店获取

Ubuntu

如果您使用Ubuntu linux(17.04或更高版本),可以使用sudo apt-get install webhook安装webhook,这将安装社区打包的版本。

Debian

如果您使用Debian linux("stretch"或更高版本),可以使用sudo apt-get install webhook安装webhook,这将安装社区打包的版本(感谢@freeekanayaka)来自https://packages.debian.org/sid/webhook

FreeBSD

如果您使用FreeBSD,可以使用pkg install webhook安装webhook。

下载预构建二进制文件

不同架构的预构建二进制文件可在GitHub Releases获得。

配置

下一步是定义一些您希望webhook提供服务的钩子。 webhook支持JSON或YAML配置文件,但在以下示例中我们主要关注JSON。 首先创建一个名为hooks.json的空文件。这个文件将包含webhook将提供服务的钩子数组。查看钩子定义页面以了解钩子可以包含的属性的详细描述,以及如何使用它们。

让我们定义一个简单的名为redeploy-webhook的钩子,它将运行位于/var/scripts/redeploy.sh的重新部署脚本。确保您的bash脚本顶部有#!/bin/shshebang。

我们的hooks.json文件现在看起来像这样:

[ { "id": "redeploy-webhook", "execute-command": "/var/scripts/redeploy.sh", "command-working-directory": "/var/webhook" } ]

**注意:**如果您更喜欢YAML,等效的hooks.yaml文件将是:

- id: redeploy-webhook execute-command: "/var/scripts/redeploy.sh" command-working-directory: "/var/webhook"

您现在可以使用以下命令运行webhook

$ /path/to/webhook -hooks hooks.json -verbose

它将在默认端口9000上启动,并为您提供一个HTTP端点

http://yourserver:9000/hooks/redeploy-webhook

查看webhook参数页面以了解如何在启动webhook时覆盖IP、端口和其他设置,如钩子热重载、详细输出等。

通过对该端点执行简单的HTTP GET或POST请求,您指定的重新部署脚本就会被执行。很整洁!

然而,这样定义的钩子可能对您的系统构成安全威胁,因为任何知道您端点的人都可以发送请求并执行您的命令。为了防止这种情况,您可以为钩子使用"trigger-rule"属性,以指定触发钩子的确切情况。例如,您可以使用它们添加一个必须作为参数提供的密钥,以成功触发钩子。请查看钩子规则页面以获取可用规则的详细列表及其用法。

多部分表单数据

webhook提供对解析多部分表单数据的有限支持。 多部分表单数据可以包含两种类型的部分:值和文件。 所有表单_值_都会自动添加到payload作用域中。 使用parse-parameters-as-json设置将给定值解析为JSON。 除非满足以下标准之一,否则所有文件都会被忽略:

  1. Content-Type头为application/json
  2. 该部分在parse-parameters-as-json设置中被命名。

在这两种情况下,给定的文件部分将被解析为JSON并添加到payload映射中。

模板

当给定-template CLI参数时,webhook可以将钩子配置文件解析为Go模板。有关模板使用的更多详细信息,请参见模板页面

使用HTTPS

webhook 默认使用 http 提供钩子服务。如果你希望 webhook 使用 https 提供安全内容,可以在启动 webhook 时使用 -secure 标志。必须使用 -cert /path/to/cert.pem-key /path/to/key.pem 标志提供包含证书和匹配私钥的文件。如果证书由证书颁发机构签名,cert 文件应该是服务器证书后跟 CA 证书的串联。

可以从命令行使用 TLS 版本和密码套件选择标志。使用 -list-cipher-suites 标志列出可用的密码套件。-tls-min-version 标志可与 -list-cipher-suites 一起使用。

CORS 头

如果你想设置 CORS 头,可以在启动 webhook 时使用 -header name=value 标志来设置适当的 CORS 头,这些头将随每个响应一起返回。

有兴趣在 Docker 容器内运行 webhook 吗?

你可以使用以下 Docker 镜像之一,或创建自己的镜像(请阅读此讨论):

示例

查看钩子示例页面以获取更复杂的钩子示例。

特色 webhook 指南

社区贡献

查看 webhook-contrib 仓库,了解 webhook 社区贡献的与 webhook 相关的工具和帮助程序集合。

需要帮助?

查看现有问题,看看是否有人遇到了相同的问题,或提出新问题

支持积极开发

赞助商

<a href="https://www.digitalocean.com/?ref=webhook"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/7259f96f-ccda-454c-91d6-73aa818704f3.png" alt="DigitalOcean" width="250"/></a>

DigitalOcean 是一个简单而强大的云计算平台,专为开发者设计。

<a href="https://www.browserstack.com/?ref=webhook"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/e3a041c2-7f04-4c79-84a6-9b7309caff16.svg" alt="BrowserStack" width="250"/></a>

BrowserStack是一种基于云的跨浏览器测试工具,它使开发人员能够在不同操作系统和移动设备的各种浏览器上测试他们的网站,而无需用户安装虚拟机、设备或模拟器。


通过成为赞助商来支持这个项目。您的logo将在此处显示,并链接到您的网站。

<a href="https://opencollective.com/webhook/sponsor/0/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/06da6237-cd83-423b-97c3-7892417ceddc.svg"></a> <a href="https://opencollective.com/webhook/sponsor/1/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/df554360-bd2b-4502-b26e-ff3dbe8e0d4d.svg"></a> <a href="https://opencollective.com/webhook/sponsor/2/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/9e4cf6a6-6398-41c5-9274-b30d6c128581.svg"></a> <a href="https://opencollective.com/webhook/sponsor/3/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/66b7eed9-95f7-46d3-8f3f-435cefe04ff7.svg"></a> <a href="https://opencollective.com/webhook/sponsor/4/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/58f698eb-a30b-49a7-8176-2eb203297262.svg"></a> <a href="https://opencollective.com/webhook/sponsor/5/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/42fd967a-13ff-4dd9-ba69-5c38b80f2901.svg"></a> <a href="https://opencollective.com/webhook/sponsor/6/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/3380ecfa-bd53-4e7c-9255-cc30aec1e6b2.svg"></a> <a href="https://opencollective.com/webhook/sponsor/7/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/0074b835-5a45-4cf9-a922-c594e0f7ad06.svg"></a> <a href="https://opencollective.com/webhook/sponsor/8/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/756e010e-10fc-4e36-9339-9de0c738bf6b.svg"></a> <a href="https://opencollective.com/webhook/sponsor/9/website" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/461da023-75a6-441b-b542-b84e15dbc5bd.svg"></a>

通过贡献

这个项目的存在要感谢所有做出贡献的人。做出贡献! <a href="graphs/contributors"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/b1fd29a9-29aa-474d-ad68-c7b4c4c38e7a.svg?width=890" /></a>

通过捐款


感谢所有的支持者!

<a href="https://opencollective.com/webhook#backers" target="_blank"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/3c357635-f0c6-4455-839c-5a8cf0fcfc14.svg?width=890"></a>

许可证

MIT许可证

版权所有 (c) 2015 Adnan Hajdarevic adnanh@gmail.com

特此免费授予任何获得本软件副本和相关文档文件("软件")的人不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向其提供本软件的人这样做,但须符合以下条件:

上述版权声明和本许可声明应包含在本软件的所有副本或实质性部分中。

本软件按"原样"提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论这些追责来自合同、侵权或其它行为中,还是产生于、源于或有关于本软件以及本软件的使用或其它处置。

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多