type
Post
status
Published
date
Feb 6, 2026
slug
webstack-3
summary
利用 GitHub Actions,搭建一条全自动化的“图标生产流水线”。
tags
开发
建站
category
技术分享
icon
password
前情提要
  • [第一集]:我受够了手动下载图标的累,也受够了在线引用图标的 404 报错。
  • [第二集]:我用 Python 把本地图标全部转成了 WebP,项目体积暴瘦 90%。
虽然 WebP 很香,但我不想每次加网站都手动跑脚本。我的终极梦想是:只管填网址,剩下的交给机器人。
今天,我们来完成这最后一块拼图:利用 GitHub Actions,搭建一条全自动化的“图标生产流水线”。

💡 核心思路:CI/CD 的降维打击

通常大家理解的 CI/CD 是用来跑测试、发版本的。但我拿它来抓图
我的构想是这样的:
  1. 我在 webstack.yml 里填入新网址(例如 https://weibo.com),logo 留空。
  1. git push 提交代码。
  1. GitHub 的服务器自动醒来,运行我的 Python 脚本。
  1. 脚本自动去 Google 抓取 weibo.com 的图标,转成 WebP,存入文件夹。
  1. 脚本自动把 webstack.yml 里的 logo 字段填好。
  1. GitHub Action 自动把这些改动提交回仓库。
这一套下来,我只需要填链接 -> 提交,剩下的全是自动挡。

🛠️ 第一步:编写“抓图工人” (Python)

我们需要一个能干脏活累活的脚本。
在项目根目录下新建 scripts/auto_favicon.py
这个脚本集成了三个功能:解析 URL调用 Google API 下载Pillow 转码 WebP
Python
(注:别忘了在 scripts/requirements.txt 里加上 PyYAML, Pillow, requests)

⚙️ 第二步:雇佣“监工” (GitHub Action)

脚本写好了,我不希望自己在本地跑,我要让 GitHub 帮我跑。
新建 .github/workflows/auto-icon.yml
YAML

🎉 最终体验:这就叫“躺平”

现在,我的操作流程变成了这样:
  1. 打开 webstack.yml,随便加一行:
    1. (Logo? 不用填,甚至不用管)
  1. git push
  1. 关机,睡觉。
几分钟后,手机弹出 GitHub 的通知,告诉我构建成功。
此时打开我的导航站:图标已经有了,而且是压缩好的 WebP 格式,加载速度飞快,控制台干干净净,全是绿色的 200 OK。

📝 系列总结

从最开始的手动下载(累),到后来的在线链接(慢、404),再到最后的自动化流水线(爽)
折腾这个导航站的过程,其实就是一次微型的技术架构演进
  • WebP 解决了性能问题。
  • Google API 解决了资源获取问题。
  • GitHub Actions 解决了人力维护问题。
现在,我终于拥有了一个秒开、零维护、高颜值的导航站。
这,才叫优雅。☕️

(系列完)
 
手搓导航站日记 (2):拒绝臃肿!用 Python 把几百个图标暴力转成 WebP 📉手搓导航站日记 (终章):DevOps 降临!打造“自动驾驶”级的导航站 🚀
Loading...