你的这个 deploy.yml 采用的是目前(2025–2026 年)GitHub Pages 推荐的、最现代的部署方式,属于 GitHub Pages Artifact 模式(也叫 Actions 直接部署模式),而不是老式的推送到 gh-pages 分支的方式。

下面给你完整拆解这个部署流程用到的运维技术栈和设计思路:

整体技术架构分层

层级技术/组件作用是否主流/推荐(2026视角)
静态站点生成器Zola把 markdown + toml + templates 转成纯静态 HTML/CSS/JS非常主流(Rust 系 SSG 中最快之一)
CI/CD 触发GitHub Actions on: push main + workflow_dispatch代码 push 到 main 或手动触发时执行标准做法
构建环境ubuntu-latestGitHub 提供的最新 Ubuntu runner标准
源码检出actions/checkout@v4把仓库代码拉下来最新稳定版
Zola 构建shalzz/zola-deploy-action@v0.22.1执行 zola build,输出到 ./public 目录社区最常用 Zola 专用 action
产物暂存actions/upload-pages-artifact@v3把 ./public 整个文件夹打包上传为 “Pages artifact”GitHub 官方推荐方式
部署actions/deploy-pages@v4把 artifact 真正部署到 GitHub Pages CDN官方最新部署 action
权限控制permissions: pages: write, id-token: writeOIDC 方式获取临时 token,无需 secrets.GITHUB_TOKEN 长久密钥现代安全最佳实践
并发控制concurrency group + cancel-in-progress:false防止多个构建同时跑,保留最后一次(但不禁用旧的)比较稳健的写法

这种写法最核心的三个现代化特点

  1. 使用 GitHub Pages Artifact 机制(非 gh-pages 分支)

    • 以前主流做法:把 public/ 强制 push 到 gh-pages 分支
    • 现在推荐做法:构建 → 上传 artifact → deploy-pages action 直接推送到 Pages 基础设施
      → 优点:
      • 仓库更干净(不需要 gh-pages 分支)
      • 部署更快(官方内部通道)
      • 支持 preview deployments(未来可能用)
      • 官方更推荐、安全性更高
  2. 使用 OIDC 认证(无须 secrets)

    permissions:
      pages: write
      id-token: write

    GitHub Actions 通过 OpenID Connect 临时获取权限,不需要在仓库设置任何 TOKEN,这是 2023–2024 年后强烈推荐的安全方式。

  3. 分离 build 和 deploy 两个 job
    这是官方模板的标准写法,便于以后:

    • 加测试 job
    • 加 link checker
    • 加图片压缩
    • 只在特定分支部署 preview 环境

当前这个 yml 的优缺点总结(2026 年视角)

优点

  • 符合 GitHub 官方最新推荐(2024 年底–2026 年持续强化此模式)
  • 安全(OIDC、无需 token)
  • 干净(不产生 gh-pages 分支垃圾)
  • 可手动触发(workflow_dispatch 很实用,尤其是调试时)
  • 使用了比较新的 action 版本(v4、v3)

小缺点 / 可优化点

  1. BUILD_ONLY: true 是正确的,但可以考虑去掉(默认就是只构建)

  2. 如果你的 config.toml 里 base_url 写的是 https://username.github.io,通常不需要额外 --base-url,但如果有自定义域名,建议加上:

    env:
      BUILD_FLAGS: --base-url "${{ steps.deployment.outputs.page_url }}"

    (不过大多数人都不加也正常运行)

  3. 可以把版本锁得更明确,例如 shalzz/zola-deploy-action@v0.22.1 → 建议观察是否需要跟进 Zola 新版本(目前 v0.22.x 对应 Zola 0.19.x 左右)

  4. 考虑加个缓存(可选,但对重复构建有帮助):

    - name: Cache Zola
      uses: actions/cache@v4
      with:
        path: ~/.cargo/bin/zola
        key: zola-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}

总结一句话评价

你的部署方案已经属于 2025–2026 年 GitHub Pages + Zola 项目里最推荐、最干净、最安全的写法,基本没有明显的技术债务,运维成本极低,属于“一次配置,长期稳定跑”的水平。

如果后续遇到问题,最常出现的两个点通常是:

  • config.toml 的 base_url 没写对(尤其是自定义域名时)
  • 仓库 Settings → Pages 里 Source 要选 「GitHub Actions」(不是 Any branch)

有其他具体报错或想加功能(预览部署、自定义域名、CDN 加速等),可以继续贴出来,我再帮你细调。