通过 GitHub Actions 定时更新网站内容

💡 原文英文,约900词,阅读约需4分钟。
📝

内容提要

本文介绍了作者构建自给自足的内容管理系统的经历,该系统不需要传统意义上的内容数据库,并解决了手动部署网站和降低托管成本的问题。作者通过推送到主分支、更新内容和定时更新等设置实现了灵活和方便的操作。

🔎

延伸解读

模块化工作流的灵活性与手动触发

文章将系统拆分为三个独立工作流:推送主分支部署、更新内容、定时触发更新。这种模块化设计允许作者在旅行时通过手机手动触发“更新内容”工作流,无需等待定时任务。手动触发依赖GitHub PAT,因此需要妥善保管令牌。这种灵活性适合对内容上线时间不敏感、但希望随时控制更新时机的场景。

成本与实时性的权衡

作者明确表示书签上线速度不重要,因此选择定时更新而非实时同步。定时工作流每12小时运行一次(cron表达式为“13 0,12 * * *”),在保证内容最终一致的同时,避免了频繁构建和部署带来的成本。这种设计适合个人网站或对时效性要求不高的内容管理,但若需要即时发布,则需调整定时频率或改用其他触发方式。

安全配置与权限管理

系统使用多个GitHub Secrets:部署需要Cloudflare账户ID和API令牌,更新内容需要Notion API密钥和数据库ID,以及具有代码读写权限的PAT,定时触发则需要具有Actions读写权限的另一个PAT。作者为不同工作流分配不同PAT,遵循最小权限原则。读者在复现时应注意令牌权限范围,避免过度授权导致安全风险。

❓

Q&A

如何构建一个自给自足的内容管理系统?

可以通过使用Notion数据库存储内容,并结合GitHub Actions实现自动化更新,避免手动部署。

这个系统如何解决手动部署网站的问题?

系统通过设置'推送到主分支'和'更新内容'的工作流程,实现自动构建和部署,减少手动操作。

定时更新内容的工作流程是如何设置的?

定时更新内容的工作流程使用cron表达式定期触发'更新内容'工作流程,确保内容保持最新。

作者使用Notion数据库的原因是什么?

作者希望在添加书签后无需手动部署网站,因此选择Notion数据库来存储内容。

如何通过手机手动触发内容更新?

可以使用GitHub个人访问令牌手动触发'更新内容'工作流程,从而在旅行时更新内容。

这种内容管理系统的优点是什么?

这种系统灵活且模块化,允许在不同环境下(如旅行时)轻松更新内容,降低了托管成本。

🏷️

标签

➡️

继续阅读