Files
ArtPlayer/refactor/pages-deployment.md
T

71 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Pages 迁移、验收与恢复
CI-02交付本地配置与预检;CI-04负责实际远端运行和配置切换。当前没有部署、推送、
修改仓库变量或调整Pages source。完整站点内容、外部SDK和三轮发布复盘门槛仍适用。
## 2026-09-14只读快照
- Pages API:`build_type=legacy`,source为`gh-pages`、根目录,status=built。
- CNAME与html_url:`github.artplayer.org`、`https://github.artplayer.org/`。
HTTPS enforced,证书state=approved;这些是API返回值,不是独立TLS/DNS审计。
- gh-pages提交:`a6d2b81d05c68c8c78cbe62ca0b06761c983f8b8`。本地对象已存在,
已用git archive保存ZIP恢复副本,路径/内容哈希见CI-02机器记录。
- github-pages环境为custom branch policies,读取到master与gh-pages两个branch规则。
protection_rules只有branch_policy;未据此新增或删除规则。
- PAGES_DEPLOY_ENABLED查询返回404:不能据此证明变量不存在或权限完整;启用状态未确认。
- 对根页、mobile.html、iframe.html、esm.html、document/、document/en/、
compiled/artplayer.js的HTTPS HEAD均返回200。未执行线上播放器或广告交互。
以上是时间点快照。发布前再次只读查询,核对源码SHA、旧分支、域名、环境保护和变量,
不能把它们写成永久配置或实际Actions部署已成功。
## 本地与CI产物链
1. 使用.node-version与Yarn1.22.22,frozen安装,执行ci:check和ci:build。
2. prepare:pages检查compiled与dist一致,将docs复制到独立cache目录,然后正常构建
21个旧uncompiled入口。保留CNAME/.nojekyll、旧HTML与两种语言的文档入口。
3. test:pages:browser检查暂存目录的demo/ESM入口。全部所需CI作业成功后,官方
upload-pages-artifact只上传本次步骤输出的site,deploy-pages在github-pages环境执行。
4. 报告记录source、来源文件/锁/构建脚本、63个分发入口及完整暂存文件指纹;没有
用工作区docs路径替代暂存目录,也没有从外部workflow run下载同名artifact。
脚本边界和命令见[scripts/pages](../scripts/pages/README.md)。GitHub对Pages artifact
要求无符号/硬链接,部署需要对应权限、environment及构建依赖,见
[官方自定义工作流说明](https://docs.github.com/en/pages/getting-started-with-github-pages/using-custom-workflows-with-github-pages)。
当前固定Actions的SHA沿用已验证配置,未升级依赖。
## 获得实际部署授权后的切换顺序
先确认完整发布门槛和目标master源码,再重新保存当前gh-pages提交及完整旧目录。
核对github-pages只允许受信任分支及必要审批,把Pages source切换为GitHub Actions。
确认自定义域名/DNS/TLS保持原值后,设置PAGES_DEPLOY_ENABLED=true并手动运行Deploy Pages。
记录run ID/attempt/SHA、预检报告哈希、artifact与部署URL;不要只根据workflow名称信任产物。
部署后逐项GET验证contract.json的旧路径、MIME和关键文本,再在真实页面验证桌面/
移动编辑器、中文/英文文档、ESM、iframe及播放/章节。HEAD200只证明可访问,不能代替
这些交互。检查被重写或丢失的路径,以及compiled/uncompiled确实来自批准的候选。
## 恢复
REL-04 已完成[本地完整恢复演练](changes/2026-09-15-REL-04-pages-recovery.md):
固定旧 gh-pages 提交的 538 个文件逐一匹配 Git blob,模拟脚本/域名损坏、文件缺失
和新版遗留后恢复成功,12 条 HTTP 路径与六项三引擎播放通过。
之前的 CI-02 ZIP 受本机换行配置影响,有 403 处 CRLF 文本转换;其原始记录保持
不变,但不能用于声称 Git blob 字节完全一致。今后使用命令级
`git -c core.autocrlf=false -c core.eol=lf archive` 并核对全部文件,而不是修改
全局配置或在核验时忽略换行。新 canonical ZIP 路径和哈希见
[机器证据](baselines/pages-recovery-validation.json),与报告一起保存。
该本地演练不代替以下远端恢复流程和 CI-04 门槛。
发生故障先禁用启用变量,避免新部署进入队列;不要取消已经开始的写入或自动force push。
保存失败run/部署/请求证据,并重新读取当前source和分支SHA。
如果旧gh-pages仍指向已保存的提交,经授权将Pages source恢复为该分支根目录,保留
原域名/HTTPS并等待Pages完成构建,然后重复旧路径和交互验证。如果分支已被其他人
修改,不能直接移动它:先核对保存ZIP的哈希与Git提交内容,准备明确的恢复提交/操作
供批准。恢复本次仓库代码可以revert CI-02提交,但revert不会自行恢复远端设置。
旧自动force-push工作流不是默认恢复方案。任何再次构建、内容调整或候选替换都要重跑
适用检查;不能把之前的绿灯套用到新的站点字节。