Repo: https://github.com/RedL0tus/trigger
嗯... 这又是一个轮子,还是个氧化之后的轮子。
在一些简单的场景下可以代替 CI 实现自动部署等等。
之前用过一些别的监听 GitHub webhook 的程序,但是它们大多是 Python 或 Node 之类写的,跑在我的 256MB 内存的小鸡上面内存有点吃紧。正好我当时学了一下 Rust 就自己造了一个库和一个 CLI 程序出来。
从写出来开始我就在我自己的一些别的坑上面用了,应该没什么大问题。
其实一开始是用的别人的库写的,只能根据 GitHub 发来的请求执行对应的命令。后来发现当时用的那个库已经很久没更新了,迁移上新的依赖也跟重写一个差不多了(现在 Rust 的生态就有这么个问题,一大票 0.X 的库,API 老是改)。
这两天我放假没事情干把库和程序完善了一下加了点功能,给程序发了个 1.0 版(因为我觉得可能有用的功能已经做出来了),过来打个广告。
hmac
和 sha-1
两个 crate。
ring
来做验证签名的功能的,但是 ring
有一部分是用 C 写的,使用 musl 的话会编译失败。至于为什么要用 musl 的话下面会说。run_script
这个 crate ),配合 jq 可以解析 request body。更多细节可以看 README。我英语和语文都不是很好还请各位大佬原谅(感觉我这中文 README 写得像是在丢中国人的脸)。
愿意自己编译的话可以通过 rustup 安装 Rust 的工具链,然后使用 cargo install trigger
进行安装。
如果机器配置太差或不想装工具链的话,release 页面里有使用 musl 静态链接的 Linux x86_64 的二进制可供下载(约 2.0MB )。
(因为 Rust 默认配置下编译出来的二进制有点肥,我参照了 https://github.com/johnthagen/min-sized-rust 上的一些建议,然后使用了 musl 工具链静态链接,这样编译出来的二进制比用 glibc 动态链接的要小一点,又方便在不同发行版之间共用。)
Windows 下我没测试过,但是这里使用的库应该都是纯 Rust 的所以理论上 Windows 下应该也能编译使用,就是配置文件里的 shell 脚本的语言会变成 Windows 的 cmd (根据 run_script
的 README )。
(不过我想 Windows 上用这些的应该也不是很多?)
装好之后建议再套一层 nginx 之类的逆向代理,因为我自己的喜好问题等等没给它做独立的 HTTPS 支持。
这是我第一次把我写的东西拿出来打广告... 感觉有点不要脸(小声
对比一下资源占用(依次为 VIRT, RES, SHR, CPU%, MEM%, TIME,来自两台 VPS 上的 htop)。 Node(我之前用的这个 https://github.com/fiddus/github-webhooks-listener):
Trigger:
性能的话其实对于 Webhook 这种情景不是很重要,毕竟一般压力不会太大(当然我也相信性能会更好)。
1
deviluser 2019-04-26 07:41:28 +08:00 via Android 1
马
|
2
uilvn 2019-04-26 09:17:15 +08:00 1
己赞
|
3
luassuns 2019-04-26 09:58:35 +08:00 via iPhone 1
昨天刚开始想用 Rust 做,跟你的情况一样,小鸡顶不住。
star star ! |
4
yim7 2019-04-26 10:10:12 +08:00 1
赞
|