MapLibre Particle 统一发行流水线
本目录用于在 Mac release builder 上统一生成并发布 Android Native、React Native package 和 iOS Metal XCFramework。
唯一输入
只输入 Particle revision,例如:
tools/particle_release_pipeline/release.sh 7
版本自动推导:
- Android Native / RN:13.4.1-particle.7
- iOS SwiftPM:6.28.0-particle.7
以后升级到 .8 时只输入 8,不再手工维护多个平台版本号。
固定构建环境
- macOS release builder
- JDK 17
- Gradle Wrapper 9.5.1
- Android SDK 36
- Android NDK 28.2.13676358
- CMake 3.31.6
- Android renderer:OpenGL
- iOS renderer:Metal
- iOS binary build:bazel build -c opt --//:renderer=metal //platform/ios:MapLibre.dynamic(正式优化构建;仅真机 ios-arm64,不包含 Simulator slice)
发布目标
- Android Maven:https://pbf.jpcn.ccwu.cc/maven
- RN tgz:https://pbf.jpcn.ccwu.cc/npm
- iOS binary:https://pbf.jpcn.ccwu.cc/swift/maplibre-particle
- SwiftPM Git:https://pbf.jpcn.ccwu.cc/swift/maplibre-particle-spm.git
不可变规则
同一个版本号禁止覆盖。任一公网目标已经存在时,prepare/publish 阶段直接失败;必须增加 Particle revision。
流水线从同一个版本冻结 Git commit 构建 Android 与 iOS。发布后必须从公网重新下载 artifact,并与本地产物逐字节比较;只有 public readback 通过才生成最终 release manifest 和 tag。
阶段
可单独执行:
release.sh 7 prepare
release.sh 7 build
release.sh 7 publish
release.sh 7 finalize
完整执行:
release.sh 7
prepare 会产生版本冻结 commit;finalize 会产生最终 manifest commit、tag,并推送 particle/main。发布工作必须在干净 release worktree 中运行。
.6 历史说明
13.4.1-particle.6 是 iOS 接入过渡发行。公开 RN .6 仍依赖 Android Native .5,因此不得把 .6 重新定义或覆盖成统一双平台发行。
第一个由本流水线定义的 Android/iOS 统一发行是 Particle revision 7。