webhook【钩子】零开发基础--实现服务器运行shell命令 、自动部署

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

webhook 也是一种 api,你需要设计api 然后发起对应的http请求来实现对应的功能需求,本文是基于https://github.com/adnanh/webhook (以下简称wehook)一个用 Go 编写的轻量级应用、你可以轻松的使用它来 运行shell命令 、实现版本发布等一切需求。

大概执行过程

  1. 接收请求;
  2. 解析headers, payload and query variables;
  3. 检查是否满足指定规则,
  4. 最后将参数环境变量传递给配置的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.0go1.16.5CentOS 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 格式,可以参照详细的 参数定义,还提供了一些常用的例子测试用例,如对接gitlabgithub等 。

下面是一个简单的测试配置

- 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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值