本文档描述了 React Native 的持续集成 (CI)、持续交付 (CD) 和发布流程。它涵盖了通过 GitHub Actions 工作流实现的自动化测试、构建和发布流水线。有关本地开发和测试的信息,请参阅 开发与工具。
React Native 使用 GitHub Actions 进行持续集成和交付。CI 系统运行测试、构建工件并发布版本。该系统旨在通过跨多个平台、配置和 JavaScript 引擎进行测试来确保代码质量。
来源: .github/workflows/test-all.yml .github/workflows/publish-release.yml .github/workflows/nightly.yml
| 工作流 | 触发器 | 目的 |
|---|---|---|
test-all.yml | Pull requests,Push 到 main 或 *-stable 分支 | 运行所有测试,构建所有工件 |
publish-release.yml | Tag push (v0..) | 将版本发布到 npm,Maven |
nightly.yml | 计划任务(UTC 时间凌晨 2:15),手动触发 | 发布 nightly 构建版本 |
来源: .github/workflows/test-all.yml .github/workflows/publish-release.yml .github/workflows/nightly.yml
构建流水线由多个相互依赖的任务组成,用于准备、构建和测试 React Native 组件。
来源: .github/workflows/test-all.yml40-649
Hermes 构建过程:
Android 构建流程:
iOS 构建流程:
NPM 包构建:
来源: .github/actions/build-hermesc-apple/action.yml .github/actions/build-apple-slices-hermes/action.yml .github/actions/build-hermes-macos/action.yml .github/actions/build-android/action.yml .github/actions/build-npm-package/action.yml
React Native 使用多种类型的测试来确保代码质量
来源: .github/workflows/test-all.yml123-407 .github/actions/test-js/action.yml .github/actions/test-ios-rntester/action.yml
测试在各种配置下运行,以确保兼容性
| 平台 | 架构 | JS 引擎 | 构建类型 | 其他变量 |
|---|---|---|---|---|
| iOS | 新架构,旧架构 | Hermes, JSC | Debug, Release | StaticLibraries, DynamicFrameworks |
| Android | 新架构,旧架构 | Hermes, JSC | Debug, Release | 多种设备架构 |
端到端测试使用 Maestro 测试完全构建的应用
来源: .github/workflows/test-all.yml198-407
来源: .github/workflows/publish-release.yml .github/workflows/nightly.yml
定期发布 (v0.X.Y)
发布候选版 (v0.X.Y-rc.Z)
next 标签发布到 npm每日构建版:
nightly 标签发布到 npm来源: .github/workflows/publish-release.yml9-21 .github/workflows/nightly.yml9-22
发布流程通过 GitHub Actions 工作流实现自动化
触发器:
构建流程:
发布:
文档:
验证:
来源: .github/workflows/publish-release.yml157-232 .github/actions/create-release/action.yml
来源: .github/actions/build-npm-package/action.yml .github/actions/build-android/action.yml41-60
React Native 遵循语义化版本控制,但有一些调整
0.X-stable版本号在构建过程中设置,使用脚本更新 package.json 和其他相关文件。
来源: .github/workflows/publish-release.yml4-6 .github/workflows/create-release.yml6-8
发布过程中发生的步骤如下
版本准备:
构建流程:
发布流程:
文档:
验证:
来源: .github/workflows/publish-release.yml157-232 .github/actions/create-release/action.yml
来源: .github/workflows/test-all.yml40-130 .github/actions/build-npm-package/action.yml79-103
CI/CD 系统架构包含以下组件
该系统设计为可复现的,使开发人员能够在本地运行与 CI 中相同的构建过程。
来源: .github/workflows/test-all.yml .github/workflows/publish-release.yml .github/workflows/nightly.yml
CI/CD 流水线中可能出现的常见问题
测试失败:
构建失败:
发布失败:
在排查问题时,检查 GitHub Actions 中的工作流日志是识别问题的首要方法。
来源: .github/workflows/test-all.yml651-661
React Native 使用
来源: .github/workflows/test-all.yml .github/workflows/publish-release.yml .github/workflows/nightly.yml