新博客源码保存在 astro-source,由 .github/workflows/pages.yml 构建并发布。原 master 保存 Hexo 的已发布产物,不用 Astro 产物覆盖它。本地旧方案保存在 /Users/zhanghongyin/code/blog/SpriCoder-Blog/,包括正文、配置、主题与部署目录。
当前默认分支为 astro-source,Pages 使用 workflow 发布,HTTPS 保持启用。github-pages 环境只允许 astro-source 与保留的 master 两个分支部署。首次上线提交为 8bc6da489bd244eb939410663eeb3a784042ada3,部署任务的构建和发布均已通过。
以下是 2026-10-13 的只读核验结果,切换状态以发布后的交付记录为准。
| 项目 | 原状态 |
|---|---|
| GitHub 仓库 | SpriCoder/spricoder.github.io,公开仓库 |
| 默认分支 | master |
| Hexo 分支 SHA | 393b59514e93fcf7681f82616e864617035f3b46 |
| Pages 发布方式 | legacy,master 的 / 根目录 |
| 网站 | https://spricoder.github.io/ |
| HTTPS | 强制启用 |
| 自定义域名 | 无 |
| Actions | 已启用,允许全部 Actions |
| 分支保护与规则集 | master 无保护,仓库无规则集 |
github-pages 环境 |
无审批规则,无部署分支限制 |
- 使用 Node.js 24 安装锁定的依赖、构建静态站并完成文章、旧网址、图片与统计配置核验。保留
package-lock.json;输出使用默认dist/。 - 核对远端
master仍为上表中的 SHA。创建独立astro-source,提交 Astro 源码与正文,不修改master,不提交本地凭据和node_modules/。 - 把 Pages 的发布方式改成 GitHub Actions,确认
github-pages环境允许astro-source发布,并保留master的回退资格。然后推送astro-source,由其push事件触发工作流。Pages 来源可以在仓库 Settings → Pages → Source 中修改,也可以使用下方命令。 - 等待 build 与 deploy 两个作业成功,并核对 workflow 的
headSha与本地提交一致。回读首页、旧文章地址、资源与页脚;仅推送成功不能视为发布成功。 - 如需 GitHub 网页上的手动运行入口,把默认分支改成
astro-source。此操作只改变默认分支设置,不改变master的提交;若默认分支仍为master且其中没有工作流,网页可能没有 Run workflow 按钮。日常推送到astro-source不依赖默认分支变更。
gh api --method PUT repos/SpriCoder/spricoder.github.io/pages --input - <<'JSON'
{
"build_type": "workflow",
"https_enforced": true
}
JSON工作流使用 GitHub 自动签发的令牌与 OIDC,显式权限为 contents: read、pages: write 和 id-token: write。不需要向仓库提交个人令牌。人工修改 Pages 设置需要管理 Pages 的权限;通过经典 OAuth/PAT 身份推送新工作流时,还需核验 workflow 范围。仓库管理员角色不等于令牌已拥有该范围。
三个直接调用的 Actions 已在 GitHub API 中验证,并固定到提交 SHA:
| Action | 版本 | 固定 SHA |
|---|---|---|
actions/checkout |
v7 | 3d3c42e5aac5ba805825da76410c181273ba90b1 |
withastro/action |
v6 | 3eafd002e65cc31b4f0eae0bb05450d521562247 |
actions/deploy-pages |
v5 | 368f82528645a54fb793d4d04e342629a3f51346 |
站点配置使用 site: 'https://spricoder.github.io' 和静态输出,用户名站不添加仓库名 base。GitHub Pages 不执行服务端渲染或后台接口。
正式域名继续沿用旧站统计应用、计数记录、路径与建站时间。文章网址保持原路径,避免给历史阅读量创建新的记录。统计脚本只在正式域名启用写入;本地开发、预览域名和页面构建不得增加正式累计次数。
上线前应核对旧站服务的实际读写方式,上线后应检查历史累计值和新增计数。不得把脚本存在等同于后台数值已核验,也不得在迁移中清空统计数据或重设建站日期。
回退只改变发布设置,不需要重置、强推或删除 Astro 源码。先在 Actions 页面停止尚未完成的 Astro 发布,避免回退期间继续部署。然后确认旧分支没有变化:
gh api repos/SpriCoder/spricoder.github.io/git/ref/heads/master --jq '.object.sha'结果必须为 393b59514e93fcf7681f82616e864617035f3b46。如果不同,先查明变化,不执行下方回退步骤。
若迁移时已更改默认分支,先把默认分支恢复为 master:
gh api --method PATCH repos/SpriCoder/spricoder.github.io -f default_branch=master恢复原 Pages 发布方式:
gh api --method PUT repos/SpriCoder/spricoder.github.io/pages --input - <<'JSON'
{
"build_type": "legacy",
"source": {
"branch": "master",
"path": "/"
},
"https_enforced": true
}
JSON等待自动构建;若未触发构建,再请求一次:
gh api --method POST repos/SpriCoder/spricoder.github.io/pages/builds回读配置与构建结果:
gh api repos/SpriCoder/spricoder.github.io/pages --jq '{build_type,source,status,html_url,https_enforced}'
gh api repos/SpriCoder/spricoder.github.io/pages/builds/latest --jq '{status,commit,error}'必须确认 build_type=legacy、source=master:/、构建为 built、构建提交等于旧 SHA,再通过网站核对首页和代表文章。保留 astro-source 与本地新站,供后续修复与重新发布。