WebHook入门教程:快速实现自动化运维,如自动热部署、自动重启服务、自动备份数据库等等

WebHook入门教程

 

当我们向Github仓库(其他支持webhook的Git仓库都可以)Push代码后,可以通过webhook向特定URL发起一次Post请求,本篇文章所说的WebHook,就是运行在服务端的Service,当WebHook收到Git仓库的Post请求后,会根据Post请求的URI信息,执行服务端的Shell脚步,当git push ... 代码后,git仓库根据webhook配置向特定url发送请求,服务端WebHook接受请求后,根据URI信息,可以自动git pull下最新的代码,然后实时重启最新代码的服务,当然也可以做其他事情,完成自动化运维操作。

 

Gitee仓库配置WebHook

在git仓库 -> 管理 -> WebHook 下可以配置WebHook

注意:配置完毕后,剩下就是服务端安装并运行WebHook服务进行自动化运维了。

 

服务端WebHook介绍

webhook是用Go语言编写的轻量级可配置工具,它使您可以轻松地在服务器上创建HTTP端点(挂钩),可用于执行已配置的命令。您还可以将数据从HTTP请求(例如标头,有效负载或查询变量)传递到命令。webhook还允许您指定触发钩子必须满足的规则。

例如,如果您使用的是Github或Bitbucket,则每当您将更改推送到项目的master分支时,都可以使用webhook设置一个挂钩,该挂钩在登台服务器上为您的项目运行重新部署脚本。

如果您使用Mattermost或Slack,则可以设置“传出Webhook集成”或“斜线命令”以在服务器上运行各种命令,然后可以使用“传入Webhook集成”直接向您或您的渠道报告,或者适当的回应机构。

webhook的目标是无所不能,那就是:

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

其他所有内容均由命令作者负责。

 

如果您没有时间浪费在配置,托管,调试和维护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 webhookWebhook将安装来自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模板。有关模板用法的更多详细信息,请参见模板页面

 

使用HTTPS

默认情况下,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标头

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

 

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

您可以使用almir/webhook docker映像,也可以创建自己的映像(请阅读此讨论)。

 

例子

查看“ 挂钩示例”页面,获取更复杂的挂钩示例。

 

带有webhook的指南

 

社区贡献

看到网络挂接-的contrib仓库中的涉及到的工具和助手一集网络挂接已贡献的网络挂接社区。

 

需要帮忙?

查看现有问题,看看其他人是否也遇到相同问题,或者打开一个新问题。

 

赞助商

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

BrowserStack是基于云的跨浏览器测试工具,使开发人员可以在不同操作系统和移动设备上的各种浏览器上测试其网站,而无需用户安装虚拟机,设备或仿真器。


通过成为赞助者来支持该项目。您的徽标将显示在此处,并带有指向您网站的链接。

         

 

通过贡献

这个项目的存在要感谢所有贡献者。有助于!。 

 

通过捐赠


谢谢所有支持者!

 

执照

MIT许可证(MIT)

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

特此免费授予获得此软件和相关文档文件(“软件”)副本的任何人无限制地处理软件的权利,包括但不限于使用,复制,修改,合并的权利,发布,分发,再许可和/或出售本软件的副本,并允许具有本软件的个人遵循以下条件:

以上版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。

本软件按“原样”提供,不提供任何形式的明示或暗示的担保,包括但不限于对适销性,特定目的的适用性和非侵权性的担保。无论是由于软件,使用或其他方式产生的,与之有关或与之有关的合同,侵权或其他形式的任何索赔,损害或其他责任,作者或版权所有者概不负责。软件。

 

翻译来至:https://gitee.com/yunwisdoms/webhook

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值