Go语言编写的轻量级HTTP端点创建工具
webhook是一个Go语言开发的轻量级工具,用于在服务器上创建HTTP端点执行指定命令。它能从HTTP请求传递数据,设置触发规则,适用于代码托管平台的自动部署和通讯工具的命令执行。webhook专注于请求处理、数据解析、规则检查和命令执行,为开发者提供灵活的webhook配置方案。
webhook是一个用Go编写的轻量级可配置工具,它允许您在服务器上轻松创建HTTP端点(钩子),您可以用它来执行配置的命令。您还可以将HTTP请求中的数据(如头部、负载或查询变量)传递给您的命令。webhook还允许您指定必须满足的规则,以触发钩子。
例如,如果您使用Github或Bitbucket,您可以使用webhook设置一个钩子,每当您向项目的主分支推送更改时,该钩子就会在您的暂存服务器上运行项目的重新部署脚本。
如果您使用Mattermost或Slack,您可以设置"传出webhook集成"或"斜杠命令"来在您的服务器上运行各种命令,然后可以使用"传入webhook集成"或适当的响应体直接向您或您的频道报告。
webhook的目标是只做它应该做的事,即:
其他一切都是命令作者的责任。
<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。
如果您使用Ubuntu linux(17.04或更高版本),可以使用sudo apt-get install webhook
安装webhook,这将安装社区打包的版本。
如果您使用Debian linux("stretch"或更高版本),可以使用sudo apt-get install webhook
安装webhook,这将安装社区打包的版本(感谢@freeekanayaka)来自https://packages.debian.org/sid/webhook
如果您使用FreeBSD,可以使用pkg install webhook
安装webhook。
不同架构的预构建二进制文件可在GitHub Releases获得。
下一步是定义一些您希望webhook提供服务的钩子。
webhook支持JSON或YAML配置文件,但在以下示例中我们主要关注JSON。
首先创建一个名为hooks.json
的空文件。这个文件将包含webhook将提供服务的钩子数组。查看钩子定义页面以了解钩子可以包含的属性的详细描述,以及如何使用它们。
让我们定义一个简单的名为redeploy-webhook
的钩子,它将运行位于/var/scripts/redeploy.sh
的重新部署脚本。确保您的bash脚本顶部有#!/bin/sh
shebang。
我们的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。
除非满足以下标准之一,否则所有文件都会被忽略:
Content-Type
头为application/json
。parse-parameters-as-json
设置中被命名。在这两种情况下,给定的文件部分将被解析为JSON并添加到payload
映射中。
当给定-template
CLI参数时,webhook可以将钩子配置文件解析为Go模板。有关模板使用的更多详细信息,请参见模板页面。
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 头,可以在启动 webhook 时使用 -header name=value
标志来设置适当的 CORS 头,这些头将随每个响应一起返回。
你可以使用以下 Docker 镜像之一,或创建自己的镜像(请阅读此讨论):
查看钩子示例 页面以获取更复杂的钩子示例。
查看 webhook-contrib 仓库,了解 webhook 社区贡献的与 webhook 相关的工具和帮助程序集合。
DigitalOcean 是一个简单而强大的云计算平台,专为开发者设计。
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
特此免费授予任何获得本软件副本和相关文档文件("软件")的人不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向其提供本软件的人这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或实质性部分中。
本软件按"原样"提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论这些追责来自合同、侵权或其它行为中,还是产生于、源于或有关于本软件以及本软件的使用或其它处置。
最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。
像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。
AI数字人视频创作平台
Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。
一站式AI创作平台
提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作
AI办公助手,复杂任务高效处理
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!
AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号