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

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
Google DeepMind News
Google DeepMind News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
P
Proofpoint News Feed
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog
U
Unit 42
云风的 BLOG
云风的 BLOG
Recorded Future
Recorded Future
G
Google Developers Blog
I
InfoQ
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
Jina AI
Jina AI
量子位
宝玉的分享
宝玉的分享
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 聂微东
Last Week in AI
Last Week in AI
WordPress大学
WordPress大学
美团技术团队
The Hacker News
The Hacker News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Tailwind CSS Blog
博客园 - 司徒正美
博客园 - 叶小钗
Hugging Face - Blog
Hugging Face - Blog
P
Palo Alto Networks Blog
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
博客园 - 【当耐特】
Spread Privacy
Spread Privacy
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
Vercel News
Vercel News
Martin Fowler
Martin Fowler
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Forbes - Security
Forbes - Security
Attack and Defense Labs
Attack and Defense Labs
Google DeepMind News
Google DeepMind News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog
P
Privacy International News Feed
G
GRAHAM CLULEY
The Last Watchdog
The Last Watchdog
C
Cyber Attacks, Cyber Crime and Cyber Security
AI
AI
V2EX - 技术
V2EX - 技术

Surmon.me

一人有限集团 你就是不敢 创造力是温柔的谎言 人类正在退出人类 AI 代替不了这样的你 脉冲点火背后的架构设计 基于 Cloudflare 生态的 AI Agent 实现 NodePress 支持用户登录了 从统计学习到通用智能 2025 投资报告:走慢的路 无依之地 会杀人的菩萨 无我不是共识 文化的积重与偏见 当下即安 科学的尽头是态度 无我不是 Egoless 信仰不因恐惧而存在 世间无解的矛与盾 先别急着做些什么 佛不需要你的皈依 真理的幻觉 两扇大门 造心里的浮屠 自胜者强 逻辑与智慧 真的相 快乐的秘密 只需愿意 是名体验 最深沉的梦 森林里倒下的树 现象与相 庸人自扰 React 与 Vue 的完美融合 开心就好吗 与原生家庭和解 两支毒箭 怎么自净其意 一尘不染 一片白云 让风穿膛而过 喝下去,然后闭嘴 活在当下 当纠结发生时 唯「我」独尊 一场把戏(时间) 一场把戏(二元对立) “我” 和 “我” 谁是众生? 船里没有人 玫瑰不需要说话 没有人能渡任何人 你我为轮,使之不再 当我们在谈论独立时 自我约束就是最好的自我接纳 从善与恶的表象出发 佛法不是心理学 别人眼中的你并不是你 高高山上走 祝你心想事成 祝你的噩梦早日发生 道是无情却有情 裙子只为自己而穿 不要盲目地评估自己 先别急着 “爱自己” 让生命欣然舞动 你无法复制乔布斯 符号不是目的 如果一件事发生了 每当我起心动念时 爱出者爱返 理解不是尊重的基础 在没有解决自己的问题之前 “知足常乐” 不是比较 逻辑是无法成为信仰的 买不到的自由 成为诵经者 伤口听不懂大道理 是立场让你不自由 - Unfreedom 天雨大不润无根之草 做自己的神 当心诱惑本身 牛洞冥思录 修罗启示录 让大脑自举 我更喜欢叫它无梦寺 存在主义也许不是解药 出南洋记 2022 的所有答复 没意义的表达 思考的记录 故宫暂行之幻想 极端的比较 解构的终极 舍利子是如何炼成的 心要野 佛教的偏见 文艺青年 我是动物
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,我的部署代码 都在这里 了,快去试试吧,还是能节省一些工作量的。