63 lines
2.0 KiB
Markdown
63 lines
2.0 KiB
Markdown
# 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 --//: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。
|