SuperAPI AI 工具集

bootstrap-release

部署与运维

查看项目

更新于 10-16 19:56

技能介绍

用途

该工作流用于 Bootstrap 仓库的维护者发布。它定义了从版本准备到 npm、GitHub、NuGet 和文档部署的完整发布步骤,适用于 alpha、beta、release-candidate 以及稳定版本的发布。

主要能力

工作流将发布拆分为十个可跟踪步骤:检查发布前置条件、准备版本、运行测试、构建发布文件、提交并合并发布 PR、验证并打标签、发布到 npm、发布 GitHub Release、部署文档、验证发布结果。它涉及 npm、GitHub、NuGet 三个发布渠道,并包含文档部署到 gh-pages 的流程。

使用方式

发布前需设置发布分支与版本号:

export RELEASE_BRANCH=main export RELEASE_VERSION=6.0.0-alpha.1 export RELEASE_TAG="v${RELEASE_VERSION}"

前置检查包括更新发布分支、使用 .nvmrc 指定的 Node.js 版本、安装精确依赖、确认 npm 与 GitHub 权限:

git switch "$RELEASE_BRANCH" git pull --ff-only origin "$RELEASE_BRANCH" git status --short nvm use npm ci npm whoami gh auth status

版本准备通过 npm run release-version 完成,可先用 --dry-run 预览。该脚本会更新 README.md、config.yml、js/src/base-component.ts、package.js、package.json、package-lock.json、scss/_banner.scss、site/data/docs-versions.yml 等文件,并同步 RubyGem 版本字符串。随后运行 npm test 与 npm run bundlewatch,浏览器测试需要 Chromium,可按提示使用 npx playwright install --with-deps chromium 安装。发布构建使用 npm run release,生成 CSS、JavaScript、TypeScript 声明、SRI 哈希、文档站点以及 dist 与 examples 两个 ZIP 文件。

提交与合并阶段,从发布分支创建 release 分支,提交后通过 gh pr create 创建 PR,等待所有必需检查通过并先合并再打标签。合并后在发布分支上重复构建并确认工作区保持干净,获得明确批准后创建并推送签名标签:

git tag -s "$RELEASE_TAG" -m "$RELEASE_TAG" git push origin "$RELEASE_TAG"

npm 发布阶段先用 npm pack --dry-run 检查包内容,获得批准后执行 npm publish --tag next,并用 npm dist-tag ls bootstrap 验证 next 指向新版本且 latest 仍指向最新稳定版。GitHub Release 阶段使用 gh release create 附加两个 ZIP 文件并标记为 prerelease,发布后触发 .github/workflows/publish-nuget.yml 并确认两个 NuGet 包发布成功。文档部署通过 gh workflow run docs-deploy.yml --ref "$RELEASE_BRANCH" 手动触发,并确认 Pages 源仍为 gh-pages 分支。

适用场景

适用于 Bootstrap 维护者在本仓库执行正式发布或预发布,包括 npm、GitHub Release、NuGet 与文档站点的同步发布与校验。

限制与安全规则

发布前工作区必须干净;alpha、beta、release-candidate 的 npm 发布使用 next 标签;禁止将 npm 的 latest 指向预发布版本;GitHub 预发布必须标记为 prerelease;必须使用签名 Git 标签;禁止编辑生成的 SRI 哈希;每次外部写入前暂停并获得明确批准;任何检查失败后停止。发布验证需要确认 npm 版本与分发标签、GitHub Release 附件、NuGet 工作流、首页版本、新旧文档版本加载以及 jsDelivr 上 CSS 与 JavaScript 文件及其 SRI 哈希匹配 config.yml,jsDelivr 加载新版本可能需数分钟。恢复方面,不应对有问题的 npm 版本执行撤销发布,而应发布修正版本;可使用 npm dist-tag add bootstrap@<good-version> next 移动预发布分发标签,或使用 gh release delete "$RELEASE_TAG" --cleanup-tag 删除错误的 GitHub Release 与标签,两种恢复操作前均需获得明确批准。