人们眼中的天才之所以卓越非凡,并非天资超人一等而是付出了持续不断的努力。1 万小时的锤炼是任何人从平凡变成超凡的必要条件。———— 马尔科姆·格拉德威尔

🌟 Hello,我是 Xxtaoaooo!
🌈 “代码是逻辑的诗篇,架构是思想的交响”

React Native 跨平台鸿蒙开发实战:构建 CI/CD 与自动化发布流程

随着项目的迭代,手动打包发布不仅低效,而且容易出错。对于 React Native (RN) 鸿蒙应用,构建一套自动化的持续集成与持续部署(CI/CD)流水线,是实现工程化标准化的关键一步。本文将介绍如何利用 GitHub Actions 或 Jenkins 搭建 RN 鸿蒙应用的自动化构建流程。


一、鸿蒙命令行构建工具:Hvigor

自动化构建的基础是命令行工具。鸿蒙开发套件提供了 hvigor,类似于 Android 的 Gradle。

1.1 常用构建命令

在项目根目录下,我们通常会封装 package.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

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 配置文件。

// 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。

# 获取 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 灰度发布策略

为了降低风险,建议采用灰度发布。

  1. 开放式测试:在 AGC 后台创建测试计划,邀请内部人员或种子用户通过测试链接下载。
  2. 分阶段发布:审核通过后,选择“分阶段发布”,先覆盖 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

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐