赞
踩
当我们向Github仓库(其他支持webhook的Git仓库都可以)Push代码后,可以通过webhook向特定URL发起一次Post请求,本篇文章所说的WebHook,就是运行在服务端的Service,当WebHook收到Git仓库的Post请求后,会根据Post请求的URI信息,执行服务端的Shell脚步,当git push ... 代码后,git仓库根据webhook配置向特定url发送请求,服务端WebHook接受请求后,根据URI信息,可以自动git pull下最新的代码,然后实时重启最新代码的服务,当然也可以做其他事情,完成自动化运维操作。
在git仓库 -> 管理 -> WebHook 下可以配置WebHook
注意:配置完毕后,剩下就是服务端安装并运行WebHook服务进行自动化运维了。
webhook是用Go语言编写的轻量级可配置工具,它使您可以轻松地在服务器上创建HTTP端点(挂钩),可用于执行已配置的命令。您还可以将数据从HTTP请求(例如标头,有效负载或查询变量)传递到命令。webhook还允许您指定触发钩子必须满足的规则。
例如,如果您使用的是Github或Bitbucket,则每当您将更改推送到项目的master分支时,都可以使用webhook设置一个挂钩,该挂钩在登台服务器上为您的项目运行重新部署脚本。
如果您使用Mattermost或Slack,则可以设置“传出Webhook集成”或“斜线命令”以在服务器上运行各种命令,然后可以使用“传入Webhook集成”直接向您或您的渠道报告,或者适当的回应机构。
其他所有内容均由命令作者负责。
如果您没有时间浪费在配置,托管,调试和维护Webhook实例上,我们提供了一个SaaS解决方案,该解决方案具有webhook提供的所有功能,以及更多功能,并且全部打包在一个友好的Web界面中。如果您有兴趣,请在hookdoo网站上找到更多信息。如果您有任何疑问,可以通过info@hookdoo.com与我们联系。
从源头建造
首先,请确保已正确设置Go 1.12或更高版本的环境,然后运行
$去获取github.com/adnanh/webhook
获得最新版本的webhook。
快照存储的Ubuntu
如果您使用的是Ubuntu linux(17.04或更高版本),则可以安装webhook来sudo apt-get install webhook
安装社区版本。
如果您使用的是Debian linux(“ stretch”或更高版本),则可以安装webhook,使用sudo apt-get install webhook
该Webhook将安装来自https://packages.debian.org/sid/webhook的社区打包版本(感谢@freeekanayaka)。
GitHub Releases提供了针对不同架构的预构建二进制文件。
下一步是定义一些您希望webhook服务的钩子。首先创建一个名为的空文件hooks.json
。该文件将包含Webhook将服务的钩子数组。查看“ 挂钩定义”页面,以详细了解挂钩可以包含哪些属性以及如何使用它们。
让我们定义一个简单的钩子redeploy-webhook
,该钩子将运行位于中的重新部署脚本/var/scripts/redeploy.sh
。确保您的bash脚本#!/bin/sh
位于顶部。
hooks.json
现在,我们的文件将如下所示:
- [
- {
- "id": "redeploy-webhook",
- "execute-command": "/var/scripts/redeploy.sh",
- "command-working-directory": "/var/webhook"
- }
- ]
您现在可以运行网络挂接使用
$ /path/to/webhook -hooks hooks.json -verbose
它将在默认端口9000上启动,并为您提供一个HTTP端点
http://yourserver:9000/hooks/redeploy-webhook
检查网络挂接参数页面来看看如何在开始时覆盖IP,端口和其他设置,如钩hotreload,详细输出等,网络挂接。
通过对该端点执行简单的HTTP GET或POST请求,将执行您指定的重新部署脚本。整齐!
但是,这样定义的钩子可能会对您的系统造成安全威胁,因为知道端点的任何人都可以发送请求并执行您的命令。为防止这种情况,可以将"trigger-rule"
属性用于挂钩,以指定触发挂钩的确切环境。例如,您可以使用它们添加一个秘密,您必须将其作为参数提供才能成功触发该钩子。请查看“ 挂钩规则”页面,以获取可用规则及其用法的详细列表。
hooks.json
给定-template
CLI参数,webhook可以将输入文件解析为Go模板。有关模板用法的更多详细信息,请参见模板页面。
默认情况下,webhook使用http提供钩子。如果您希望webhook使用https提供安全内容,则可以-secure
在启动webhook时使用该标志。必须使用-cert /path/to/cert.pem
和-key /path/to/key.pem
标志提供包含服务器证书和匹配私钥的文件。如果证书是由证书颁发机构签名的,则证书文件应是服务器证书的后缀,然后是CA的证书。
TLS版本和密码套件选择标志可从命令行获得。要列出可用的密码套件,请使用-list-cipher-suites
标志。该-tls-min-version
标志可以与一起使用-list-cipher-suites
。
如果要设置CORS标头,则可以-header name=value
在启动webhook时使用该标志来设置将随每个响应返回的适当的CORS标头。
您可以使用almir/webhook docker映像,也可以创建自己的映像(请阅读此讨论)。
查看“ 挂钩示例”页面,获取更复杂的挂钩示例。
看到网络挂接-的contrib仓库中的涉及到的工具和助手一集网络挂接已贡献的网络挂接社区。
查看现有问题,看看其他人是否也遇到相同问题,或者打开一个新问题。
DigitalOcean是一个简单而强大的云计算平台,专为开发人员设计。
BrowserStack是基于云的跨浏览器测试工具,使开发人员可以在不同操作系统和移动设备上的各种浏览器上测试其网站,而无需用户安装虚拟机,设备或仿真器。
通过成为赞助者来支持该项目。您的徽标将显示在此处,并带有指向您网站的链接。
这个项目的存在要感谢所有贡献者。有助于!。
谢谢所有支持者!
MIT许可证(MIT)
版权所有(c)2015 Adnan Hajdarevic adnanh@gmail.com
特此免费授予获得此软件和相关文档文件(“软件”)副本的任何人无限制地处理软件的权利,包括但不限于使用,复制,修改,合并的权利,发布,分发,再许可和/或出售本软件的副本,并允许具有本软件的个人遵循以下条件:
以上版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。
本软件按“原样”提供,不提供任何形式的明示或暗示的担保,包括但不限于对适销性,特定目的的适用性和非侵权性的担保。无论是由于软件,使用或其他方式产生的,与之有关或与之有关的合同,侵权或其他形式的任何索赔,损害或其他责任,作者或版权所有者概不负责。软件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。