人们眼中的天才之所以卓越非凡,并非天资超人一等而是付出了持续不断的努力。1 万小时的锤炼是任何人从平凡变成超凡的必要条件。------------ 马尔科姆·格拉德威尔
🌟 Hello,我是 Xxtaoaooo!
🌈 "代码是逻辑的诗篇,架构是思想的交响"
React Native 跨平台鸿蒙开发实战:构建 CI/CD 与自动化发布流程
随着项目的迭代,手动打包发布不仅低效,而且容易出错。对于 React Native (RN) 鸿蒙应用,构建一套自动化的持续集成与持续部署(CI/CD)流水线,是实现工程化标准化的关键一步。本文将介绍如何利用 GitHub Actions 或 Jenkins 搭建 RN 鸿蒙应用的自动化构建流程。
一、鸿蒙命令行构建工具:Hvigor
自动化构建的基础是命令行工具。鸿蒙开发套件提供了 hvigor,类似于 Android 的 Gradle。
1.1 常用构建命令
在项目根目录下,我们通常会封装 package.json 脚本:
json
"scripts": {
"build:hap:debug": "hvigorw assembleHap --mode debug",
"build:hap:release": "hvigorw assembleHap --mode release",
"build:app": "hvigorw assembleApp"
}
1.2 签名配置自动化
在 CI 环境中,我们无法使用 IDE 的自动签名,必须配置手动签名。通常的做法是将证书文件(.p12, .cer, .p7b)加密存储在 CI 的 Secrets 中,并在构建时解密。
二、基于 GitHub Actions 的 CI 流水线
GitHub Actions 是目前最流行的 CI 工具之一,且免费额度足够开源或小型项目使用。
2.1 Workflow 配置文件示例
创建 .github/workflows/harmony-build.yml:
yaml
name: Build HarmonyOS App
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
- name: Install Dependencies
run: npm ci
- name: Setup Java
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '17'
- name: Setup HarmonyOS SDK
# 这里假设使用了社区封装好的 Action 或自行下载 SDK 命令行工具
run: |
curl -L -o command-line-tools.zip <SDK_URL>
unzip command-line-tools.zip -d sdk
- name: Decode Signing Keys
env:
SIGN_KEY_BASE64: ${{ secrets.SIGN_KEY_BASE64 }}
run: |
echo $SIGN_KEY_BASE64 | base64 -d > harmony/sign.p12
- name: Build HAP
run: cd harmony && ./hvigorw assembleHap --mode release
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: app-release
path: harmony/entry/build/default/outputs/default/entry-default-signed.hap
核心点评 :
这个流程涵盖了环境准备、依赖安装、证书解密、构建打包、产物上传的全过程。最棘手的部分通常是 HarmonyOS SDK 的命令行工具配置,因为目前华为官方尚未提供公开的 Docker 镜像,通常需要自建构建镜像。
三、多环境管理与版本控制
在实际开发中,我们通常有 Dev、Staging、Prod 三个环境,它们对应不同的 API 地址和应用包名。
3.1 环境变量配置
可以使用 react-native-config 库(需鸿蒙适配版)或简单的 JS 配置文件。
javascript
// config.js
import { NativeModules } from 'react-native'
const env = NativeModules.BuildInfo.env || 'dev'
const configs = {
dev: { API_URL: 'https://dev.api.com' },
prod: { API_URL: 'https://api.com' },
}
export default configs[env]
3.2 自动化版本号管理
在 CI 流程中,我们可以根据 Commit 数量自动递增 Version Code。
bash
# 获取 git commit 数量作为 version code
VERSION_CODE=$(git rev-list --count HEAD)
# 使用 sed 修改 build-profile.json5 中的 versionCode
sed -i "s/\"versionCode\": [0-9]*/\"versionCode\": $VERSION_CODE/" harmony/AppScope/app.json5
四、发布到 AppGallery Connect
构建完成后,下一步是发布到华为应用市场(AppGallery)。
4.1 自动化发布 API
AppGallery Connect 提供了 REST API,允许通过脚本上传软件包并提交审核。
华为应用市场 AppGallery Connect API CI Server (Jenkins/GitHub) 华为应用市场 AppGallery Connect API CI Server (Jenkins/GitHub) 1. 获取 Access Token Token 2. 获取上传地址 Upload URL 3. 上传 .app / .hap 文件 File ID 4. 更新应用文件信息 5. 提交审核 进入人工审核队列
图 1:自动化发布流程时序图
4.2 灰度发布策略
为了降低风险,建议采用灰度发布。
- 开放式测试:在 AGC 后台创建测试计划,邀请内部人员或种子用户通过测试链接下载。
- 分阶段发布:审核通过后,选择"分阶段发布",先覆盖 1% -> 5% -> 20% -> 100% 的用户,观察崩溃率和反馈。
4.3 整体 CI/CD 架构图
部署阶段
构建阶段
代码提交
dev
main
Git Push
触发 Webhook
拉取代码
Run Lint & Tests
Build RN Bundle
Build HAP
Branch?
上传至蒲公英/Fir
上传至 AGC
触发灰度发布
图 2:RN 鸿蒙应用 CI/CD 整体架构
🌟 嗨,我是 Xxtaoaooo!
⚙️ 【点赞】让更多同行看见深度干货
🚀 【关注】持续获取行业前沿技术与经验
🧩 【评论】分享你的实战经验或技术困惑
作为一名技术实践者,我始终相信:
每一次技术探讨都是认知升级的契机,期待在评论区与你碰撞灵感火花 🔥
欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net