惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog
Y
Y Combinator Blog
WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
量子位
The Cloudflare Blog
T
The Blog of Author Tim Ferriss
博客园_首页
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
阮一峰的网络日志
阮一峰的网络日志
L
LangChain Blog
宝玉的分享
宝玉的分享

Surmon.me

一人有限集团 你就是不敢 创造力是温柔的谎言 人类正在退出人类 AI 代替不了这样的你 脉冲点火背后的架构设计 基于 Cloudflare 生态的 AI Agent 实现 NodePress 支持用户登录了 从统计学习到通用智能 2025 投资报告:走慢的路 无依之地 会杀人的菩萨 无我不是共识 文化的积重与偏见 当下即安 科学的尽头是态度 无我不是 Egoless 信仰不因恐惧而存在 世间无解的矛与盾 先别急着做些什么 佛不需要你的皈依 真理的幻觉 两扇大门 造心里的浮屠 自胜者强 逻辑与智慧 真的相 快乐的秘密 只需愿意 是名体验
GitHub + Webhooks 简易的自动化部署流程
Surmon · 2017-02-14 · via Surmon.me

机器可以做的事就应该交给机器去做;说一下 GitHub 项目和 Linux 的自动化部署流程及实现。

简单说,我们的项目分开发生产两种模式,最终是要 run 在生产环境的,产品在两者之间切换时会有一些问题的产生,比如生产环境下的配置、账密、构建编译、打包、重载..., 这其实涉及到持续集成部分,但一个完备的持续集成挺复杂的,我就只说部署。

Js栈的程序是相对最好部署的,直接 pm2 开启 watch 就可以了,程序挂了、内存溢出了、文件更新了...就自动重启了,虽然也还是有一些小问题。

核心:需要在自己本地 push 项目之后,远程服务器自动 pull 代码,然后该 build build,该重启重启

OK,GitHub 提供了 Webhooks 功能,就是回调钩子,不过是 web 形式的回调,所以叫 Webhooks,给其一个线上服务器地址,加一些简单的配置(比如 Secret、请求头之类的), 在你对应项目发生一些动作的时候 [ 如:push、commit...,这些动作也是需要你自己配置的 ],他会自动以 [ POST + 一堆项目相关的数据 ] 回调这个地址,然后服务端再用脚本处理,该干嘛干嘛,比如可以执行对应项目的 shell 啦,执行 reload 啦,都 OK。

同时添加 Webhooks 成功后,你可以看到自己它每一次请求部署服务器的记录,详细到每一块数据,以及部署服务器返回的响应状态,还可以手动重新请求。

GitHub 的 Webhooks,在这里:

配置后台
配置后台
Webhook 请求测试
Webhook 请求测试
Webhook 作业记录
Webhook 作业记录

应该大部分 git 服务都有 Webhooks 功能,Coding 反正也有。

OK,部署服务端也没有那么麻烦,像我这种没有部署服务器的,就在生产服务器开个端口就行了,最终我用了 #github-webhook-handler 这个项目,简单快速,run 起来也就 20M 左右, 基于 HTTP 的,其实就是简单对 GitHub 的数据和头封装了一下,同时好像是对 GitHub 的哈希进行了校验处理,不需要手动验证 Secret,我的部署代码 都在这里 了,快去试试吧,还是能节省一些工作量的。