发布¶
在 main 上推送 tag 触发 .github/workflows/release.yml 的 Release workflow:
- 校验稳定版
vX.Y.Ztag、CHANGELOG 的准确最终版本标题、匹配的VERSION_NAME、README 和安装页中一致且无未发布提示的 BOM 坐标,以及该提交属于main。 - 在同一提交上运行可复用 CI:API 检查、单元测试、lint、release/R8、独立 Maven 消费工程、完整文档网站,以及带参考服务的模拟器 E2E。
- 使用
publishAndReleaseToMavenCentral发布全部签名模块和 BOM,基于 vanniktech/gradle-maven-publish-plugin。 - 以该版本 CHANGELOG 为说明创建 GitHub release,并附上 Demo APK。
每个仓库配置一次¶
- 在 Central Portal 验证
io.github.junelegencynamespace,创建 user token。 - 创建 GPG 签名密钥,将公钥发布到 key server。
- 添加仓库 secrets:
MAVEN_CENTRAL_USERNAME、MAVEN_CENTRAL_PASSWORD(token)、SIGNING_KEY(ASCII-armoured 私钥)、SIGNING_KEY_PASSWORD。 - 文档网站:GitHub Pages 的 source 设为 GitHub Actions,仓库变量
PAGES_ENABLED=true;CI 在每次 push 到 main 后部署site/。
每次发布¶
# 1. In CHANGELOG.md, rename "## X.Y.Z (unreleased)" to "## X.Y.Z"; set VERSION_NAME=X.Y.Z in gradle.properties.
# 2. Commit, tag and push:
git commit -am "Release X.Y.Z"
git tag vX.Y.Z
git push origin main vX.Y.Z
# 3. Bump VERSION_NAME to the next -SNAPSHOT and open a new "## (unreleased)" section.
从首个公开版本起保留稳定公开 API,包括 0.x。修改声明或接受 API diff 前阅读 兼容性策略。
打 tag 前运行 tools/check-published-consumer.sh、tools/build-docs.sh、./gradlew apiCheck 及受影响的设备/live test。同步更新安装页 BOM 版本和 snapshot 提示、README、CHANGELOG、roadmap。确认已部署网站及 API symbol 页面可访问。Central namespace 验证、签名凭证、Pages 配置是维护者先决条件,发布到本地不能验证这些配置。
所有必需 job 成功前不进行远程发布。Demo APK 在 Central 发布之前构建,避免打包失败留下半完成的 release。Release 附件 APK 使用 CI debug key 签名,安装前需卸载之前的版本。