首页/一人公司/GitHub Actions网站自动更新——从push到上线只需30秒
GitHub Actions网站自动更新——从push到上线只需30秒

GitHub Actions网站自动更新——从push到上线只需30秒

全自动部署方案:写完文章git push,剩下的全部自动化。

你有没有经历过这个场景:

写完一篇文章,打开FTP工具,登录服务器,找到网站根目录,手动上传文件,再手动清理CDN缓存。

一篇文章至少花十分钟。如果是更新多篇文章或者改配置,半小时都正常。更崩溃的是——有时候忘了上传某个文件,网站直接报错。

我刚开始做内容站的时候经常遇到这种情况。直到我花了半天研究GitHub Actions,把整个流程彻底自动化了。

现在从写完文章到上线,只需要做一件事:输入git push,回车。等30秒刷新页面——内容已经更新了。

从30分钟到30秒,效率提升了60倍。

一、GitHub Actions是什么

GitHub Actions是GitHub提供的一个自动化工具。简单说,就是一个跑在云端的机器人。

你给它写一套指令:"当某件事发生时,自动执行一系列动作"。最常见的场景:当我把代码推送到main分支时,自动安装依赖、自动构建、自动部署到服务器。

整个过程不需要人工干预。

二、最简单的方案:Vercel自动部署

如果你的网站部署在Vercel上,恭喜你——这是最省事的方案。

Vercel直接支持与GitHub仓库集成。不需要写任何YAML配置文件。在Vercel控制台关联你的GitHub仓库即可。

当你把代码推送到GitHub后,Vercel会自动:拉取最新代码、安装依赖、执行构建、部署到生产环境。

整个过程只需几分钟配置。先试试这个方案,体验一下"push完发几秒呆,刷新页面内容已更新"的感觉。

三、进阶方案:自定义工作流

如果你需要更多控制——比如在部署前做代码检查、图片压缩、通知——那就需要自己写workflow。

基本配置

在仓库根目录创建.github/workflows/deploy.yml。定义name、on(触发条件)、jobs(要执行的工作)。

核心步骤:checkout代码、配置Node环境、安装依赖、构建、部署。每个步骤都应有明确的失败处理机制——不会出现构建失败还继续部署的情况。

代码质量检查

在构建之前加一个ESLint检查步骤。如果代码格式有问题,工作流直接失败。有问题的代码从根源上阻断,不会让它进入生产环境。

图片自动优化

用sharp库扫描assets目录下的新图片,自动转换成WebP格式并压缩到200KB以内。既节省带宽,又提升页面加载速度。对于内容站来说,页面速度直接影响SEO排名,这一步带来的收益比大多数人想象的要大。

内容格式校验

如果你用MDX或Markdown写文章,加一个frontmatter校验步骤。检查每篇文章有没有缺失的必填字段(如description、slug)。少了字段构建就会失败,你收到通知去修复。这一步骤能大幅降低因格式问题导致的部署失败。

部署失败通知

如果构建失败,发送通知到你指定的地方。飞书、Slack、Discord、邮件都可以。我用的飞书群机器人,每次构建结果一目了然。

四、定时发布

有时候周末集中写了一批文章,想每天发几篇。GitHub Actions的schedule触发器可以帮你。

在workflow文件里配置cron表达式。比如每天凌晨3点自动发布一篇文章。把待发布的文章放在特定文件夹,用脚本每天自动移动一篇到发布目录,然后commit和push触发部署。

或者通过分支管理:在draft分支上写文章,用定时任务自动将特定内容合并到main分支触发部署。

五、回滚与安全

有人担心:"每次push都自动部署,万一推送了有问题的代码怎么办?"

放心。GitHub Actions支持手动回滚。在Vercel的Dashboard里可以看到每次部署的历史记录,点一下就能回滚到任意一个历史版本。

你完全可以放心地push——出了问题的回滚就完事了。Vercel的部署是原子化的:新版本部署成功后才替换旧版本,部署失败时旧版本保持不变。

六、非Vercel部署方案

如果你的网站部署在自己的服务器或云主机上,GitHub Actions仍然可以用。

在workflow的最后一步,通过SSH把构建好的文件传到你的服务器,然后远程执行重启服务的命令。前提是在GitHub仓库里配置好SSH密钥或部署Token。

比Vercel集成复杂一点,但自动化的思路完全一样。关键还是一样:一次配置,无限次自动执行。

七、版本历史带来的安全感

GitHub Actions还有一个被忽视的好处:它让你的项目有完整的版本历史。

每一篇文章、每一次修改、每一个变更,在Git日志里都清清楚楚。如果你不小心删了文件或者改了不该改的东西,随时可以git revert回去。

传统FTP方式做不到这一点。用Git管理内容意味着你的一切操作都可追溯、可回滚。对一人公司来说,这是巨大的安全感——你再也不用担心"改坏了怎么办"。

八、成本

GitHub Actions免费版每个月2000分钟。我每个月大概做100次部署,每次构建约2分钟,合计200分钟——远低于免费额度。

Vercel免费版也没有部署限制。整个自动流水线的额外成本是零。

常见问题

问:不会写YAML怎么办?

答:先直接用Vercel的自动部署方案,不需要写任何配置。熟悉之后再逐步叠加GitHub Actions。GitHub的marketplace上有大量现成的action模板可以直接用。

问:静态站点生成器(Hugo、Astro)能用吗?

答:完全可以。原理一样——构建后把静态文件部署到服务器或CDN。GitHub Actions不受框架限制。

问:多人协作怎么办?

答:通过分支保护规则——只有经过PR审核的代码才能合并到main分支并触发部署。

问:数据库迁移怎么自动化?

答:在workflow的构建步骤后、部署步骤前,加一个执行数据库迁移的脚本步骤。

问:如果部署失败了网站会挂掉吗?

答:不会。Vercel的部署是原子化的——新版本部署成功后才替换旧版本。部署失败时,旧版本保持不变。

问:每个网站的workflow都需要单独配置吗?

答:如果多个站点在同一个仓库里,可以共用一个workflow。如果仓库是独立的,则需要各自配置。

总结

GitHub Actions给一人公司带来三个核心价值:

第一是效率。从写完文章到上线只需要一个git push,省去了所有手动操作的环节。一分钱不花,效率提升几十倍。

第二是可靠性。自动化流程按固定的规则执行,没有人会忘记上传文件,没有人会在半夜爬起来修复错误。机器不会犯人类的那种"不小心"错误。

第三是可追溯。所有变更都有版本记录,出了问题随时回滚。你永远不用担心"改坏了回不去"。

如果你现在还在手动部署网站,我建议你花一个小时把自动部署配好。这一个小时投入,未来会帮你省下无数个30分钟。

去试一下。git push之后发十秒呆,然后刷新页面——看到内容已经更新了吗?这种感觉会上瘾的。

一人公司自动化创业