webhook 也是一种 api,你需要设计api 然后发起对应的http请求来实现对应的功能需求,本文是基于https://github.com/adnanh/webhook (以下简称wehook)一个用 Go 编写的轻量级应用、你可以轻松的使用它来 运行shell命令 、实现版本发布等一切需求。
大概执行过程
- 接收请求;
- 解析headers, payload and query variables;
- 检查是否满足指定规则,
- 最后将参数或环境变量传递给配置的shell.
Webhook安全性
webhook 在安全也可以配置很多策略,经过测试可以配置但不仅如下限于策略
# https://github.com/adnanh/webhook/blob/master/docs/Hook-Rules.md#match-value
1. 请求方式限制
2. ip限制
3. 请求Header (Token、CORS Headers)
4. https认证
6. 检查指定的请求参数
环境和服务安装
使用的是 webhook 2.8.0 、go1.16.5 和CentOS Linux release 7.4.1708 。
GO安装
1. rm -rf /usr/local/go && tar -C /usr/local -xzf go1.16.5.linux-amd64.tar.gz
2. export PATH=$PATH:/usr/local/go/bin
3. go version
4. vim /etc/export #可以添加至`/etc/export`
5. export PATH=$PATH:/usr/local/go/bin
6. source /etc/export
编译webhook 2.8.0
部署到服务器时,只需要编译出来的webhook 可执行文件即可。
1. unzip webhook-master.zip
2. cd webhook-master
3. go build .
4. ldd webhook #检查
服务器部署
部署的结构如下,都可以自定义,启动命令指定与配置保持一致即可。目录结构如下:
└── webhook
├── hooks.yaml
├── logs
│ └── webhook.log
├── scripts #api具体调用脚本目录
│ └── redeploy-go-webhook.sh
├── webhook_install.sh #实现webhook start 和reload
├── webhook.service #添加至开机启动
├── webhook #可执行
└── webhook.pid
----
cd webhook
1. 执行文件 chmod +x webhook
2. 配置文件 hooks.yaml
3. 使用脚本目录 chmod +x scripts/*
4. 日志目录 mkdir logs
配置文件hooks.yaml
配置文件可以是 JSON or YAML 格式,可以参照详细的 参数定义,还提供了一些常用的例子和测试用例,如对接gitlab、github等 。
下面是一个简单的测试配置
- id: webhook-install #任务id
execute-command: "/etc/webhook/scripts/webhook_install.sh" #shell命令或shell脚本
command-working-directory: / #执行目录
response-message: success #成功返回值
include-command-output-in-response: true #返回werbook返回值
trigger-rule-mismatch-http-response-code: 400 #不满足trigger-rule 规则返回码
http-methods

本文详细介绍了如何使用Webhook进行安全配置,包括请求方式限制、IP白名单、token验证等,并以GitLab为例实现Webhook自动部署。通过步骤配置hooks.yaml、设置触发规则和脚本,确保高效且安全的API集成。
最低0.47元/天 解锁文章
2469

被折叠的 条评论
为什么被折叠?



