用途:在 Flutter 应用仓库根目录使用,把 Web 构建产物发布到 AWS S3 或 S3 兼容对象存储。默认版本来源为 pubspec.yaml,构建输出为 build/web,本地部署配置为 deploy/s3.env(需 git 忽略),默认标签模式为 web-v<pubspec version>。
主要能力:脚本 scripts/release_web_s3.py 是唯一发布入口,自动完成预检(git 状态、项目结构、fvm/flutter/dart 检测、S3 连通性)、版本处理(检查提交、建议 SemVer、写回 pubspec.yaml)、校验(flutter pub get、build_runner、slang、测试、S3 上传演练)、发布(构建、写 version.json、指纹化、上传不可变发布、刷新 live、创建并推送标签)以及 promote(将已有不可变发布提升到 live 前缀)。支持 --dry-run、--skip-tests、--no-tag、--no-push、--yes、--promote 等参数。
使用方式:先创建 deploy/s3.env.example 并生成本地 deploy/s3.env,配置 S3_ENDPOINT_URL、S3_BUCKET、S3_REGION、S3_LIVE_PREFIX、S3_RELEASE_PREFIX、BASE_HREF、PWA_STRATEGY 等;凭据通过 AWS_PROFILE、CI secrets 或 AWS CLI 机制提供。启用 FINGERPRINT_WEB_BUILD=1 时会对可缓存产物做内容哈希并生成 build/web_fingerprint_manifest.json,配合 LIVE_CACHE_CONTROL 与 LIVE_HASHED_CACHE_CONTROL 设置缓存策略。
适用场景与限制:适用于使用 Flutter Web 并发布到 S3 兼容存储的项目。指纹助手与当前 Flutter Web 输出结构耦合,Flutter 升级后需重新验证;S3_RELEASE_PREFIX 为 S3_LIVE_PREFIX 子路径时脚本会排除 releases/** 以防误删。不注入应用级迁移逻辑,旧 service worker 清理需放在项目仓库。不要打印 deploy/s3.env 或 GitHub secrets 中的密钥值;BUILD_WASM 等兼容开关需显式说明后再使用。