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 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模板。有关模板用法的更多详细信息,请参见模板页面。

使用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的指南

  • 网络挂接与JIRA由@ perfecto25
  • 触发Ansible AWX作业在@jpmens 提交的SCM(例如git)上运行
  • 使用@awea使用GitHub Webhooks进行部署
  • 使用Webhooks设置自动部署和构建,作者Will Browning
  • Karolis Rusenas的3个简单步骤即可自动将Node.js应用部署到GitHub上
  • Linode通过Salt,Git和Webhooks自动执行静态站点部署
  • 普罗米修斯使用自动缩放的WebLogic集群上Kubernetes由滨海高根
  • Github上页和杰奇-的新平台LACNIC实验室由卡洛斯·马丁内斯Cagnazzo
  • Arslan Ud Din Shafiq 如何在Ubuntu上使用Webhooks部署React应用并集成Slack
  • 私人网络挂接由托马斯
  • 在网络挂接冒险通过德雷克
  • GitHub的PRO提示由斯宾塞里昂
  • 小米吸尘器+亚马逊按钮=通过c0mmensal进行短划线清洁
  • 视频:使用Docker和adnanh / webhook的Gitlab CI / CD配置可部署在VPS上-教程1,是的!让我们学习软件工程
  • ...
  • 要添加自己的吗?打开问题或创建PR :-)

社区贡献

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

需要帮忙?

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

赞助商

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

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


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

         

通过贡献

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

通过捐赠

  • OpenCollective支持者
  • OpenCollective赞助商
  • 贝宝
  • Patreon
  • 公平代码
  • 平板

谢谢所有支持者!

执照

MIT许可证(MIT)

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

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

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

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

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

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

  1. Ansible自动化运维工具介绍与部署

    ansible自动化运维工具介绍与部署 文章目录 一.什么是自动化运维? 二.常用的自动化运维工具 2.1 Ansible 2.2 SaltStack 2.3 Puppet 2.4 三种自动化工具特点 ...

  2. 自动化运维工具SaltStack详细部署

    2019独角兽企业重金招聘Python工程师标准>>> 自动化运维工具SaltStack详细部署 2014-12-28 17:30:34 标签:saltstack 原创作品,允许转载 ...

  3. 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客

    自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansib ...

  4. 云计算学习教程,Python自动化运维开发实战

    都忘记是什么时候知道python的了,我是搞linux运维的,早先只是知道搞运维必须会shell,要做一些运维自动化的工作,比如实现一些定时备份数据啊.批量执行某个操作啊.写写监控脚本什么的. 后来发 ...

  5. 云计算开发教程:Python自动化运维开发实战流程控制

    今天这篇文章是给大家分享一些云计算开发教程,今天讲解的是:Python自动化运维开发实战流程控制. Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. P ...

  6. 自动化运维工具Ansible详细部署

    一.基础介绍 ================================================================================= 1.简介 ansibl ...

  7. ansible(自动化运维上)——ansible部署,添加主机组,连通性测试

    ansible简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef. func.fabric)的优点.实现了批量系统配置.批 ...

  8. 自动化运维之ansible-安装部署与基础命令篇

    一.Ansible简介 Ansible基于Python语言开发,集合了众多优秀运维工具的优点,实现了批量运行命令.部署程序.配置系统等功能. 二.安装部署Ansible服务 Ansible自动化运维环 ...

  9. 批量部署服务器系统,自动化运维之cobbler批量部署服务器系统 | opengers

    借助cobbler完成服务器系统的批量安装 cobbler封装了tftp, pxe, kickstart, dhcp这些技术, 而且不会使网段中多出一台dhcp服务器 文中客户端是相对cobbler服 ...

最新文章

  1. oracle的后台进程能否杀掉
  2. WebBrowser页面与WinForm交互技巧
  3. java线程实例题_java线程相关试题实例源码代码
  4. php 函数 配置文件,php的几个配置文件函数
  5. etag java_你知道HTTP协议的ETag是干什么的吗?
  6. nvidia显卡cuda的性能_苦等10年!512 CUDA满血GTX 480终于出现:性能提升6%、功耗暴增43%...
  7. Atom: 被墙,插件安装慢、安装困难 解决方案
  8. FastReport.NET v2022.2.7
  9. groovy 基础知识
  10. 利用 whistle 进行混合开发调试
  11. mysql状态表 历史记录设计表_常见数据库设计(2)——历史数据问题之单记录变更...
  12. Android绘制跟随路径移动的圆圈
  13. fedora nginx php,在Fedora 24服务器和工作站上使用MariaDB和PHP / PHP-FPM设置Nginx
  14. matlab 断层 体三维重建,利用Matlab实现原木CT断层图像的三维重建
  15. 5G基站天线面临的电磁兼容问题及对策
  16. 程序媛在互联网公司会遭遇哪些性别歧视?
  17. 《设计模式之禅》读书笔记之C#版-创建类模式
  18. 奥鹏C语言程序设计考试,C语言程序设计_题库_201903_A 更新20春北理工复习题
  19. Android实例-获取安卓手机WIFI信息(XE8+小米2)
  20. 你用淘宝购物,就是在用“大数据”

热门文章

  1. Iirf安装配置(图文)
  2. PHP 国家电话区号 PHP Countries and their call codes with two letter abbreviations
  3. 浅谈 PHP 与手机 APP 开发(API 接口开发) 1
  4. Swift中文教程(十七) 可选链
  5. 部分主流sns平台的账号登录及api操作
  6. LeetCode 561. Array Partition I
  7. 【matplotlib】远程服务器使用报错 $DISPLAY
  8. 区块链技术学习之-简单加密货币-高飞币
  9. 学习日报 1026 使用属性升级MyBank
  10. 爬虫-36kr-使用xpath爬取数据-part1-提取接口所需的6开头的数字-拼接下一个接口的路径