使用Jenkins实现鸿蒙HAR应用的自动化构建打包

使用Jenkins实现鸿蒙HAR应用的自动化构建打包

在软件开发领域,自动化构建是提高开发效率和确保代码质量的重要手段。特别是在鸿蒙(OpenHarmony)应用开发中,自动化构建更是不可或缺。本文将详细介绍如何使用Jenkins命令行工具实现鸿蒙HAR应用的自动化构建打包,让开发流程更加高效、可靠。

一、引言

随着鸿蒙系统的广泛应用,越来越多的开发者投入到鸿蒙应用的开发中。然而,手动构建和打包应用不仅耗时耗力,还容易出错。因此,实现自动化构建成为开发者的迫切需求。Jenkins作为一款开源的自动化服务器软件,以其强大的功能和灵活的插件体系,成为实现这一需求的理想选择。

二、环境准备

在开始之前,请确保你已经安装了以下软件和环境:

  • Jenkins:用于自动化构建的任务调度和执行。
  • DevEco Studio:鸿蒙开发的集成开发环境(IDE),包含了必要的工具和SDK。
  • Node.js:JavaScript运行环境,用于执行hvigorw等脚本。
三、核心步骤

实现鸿蒙HAR应用的自动化构建打包,核心在于以下三个步骤:初始化依赖、初始化工作环境、执行具体的构建任务。下面将详细介绍每个步骤的具体实现。

1. 初始化依赖

首先,需要使用ohpm命令来初始化项目所需的依赖。ohpm是鸿蒙的包管理工具,类似于npm或yarn。在Jenkins脚本中,可以使用以下命令来安装所有依赖:

bash 复制代码
/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin/ohpm install --all --registry https://ohpm.openharmony.cn/ohpm/ --strict_ssl true

这条命令会从指定的ohpm仓库(https://ohpm.openharmony.cn/ohpm/)下载并安装所有在oh-package.json5中声明的依赖。

2. 初始化工作环境

接下来,使用hvigorw脚本来初始化工作环境。hvigorw是鸿蒙的构建工具,用于执行构建、编译等任务。在Jenkins脚本中,可以使用以下命令来同步项目配置并初始化工作环境:

bash 复制代码
/Applications/DevEco-Studio.app/Contents/tools/node/bin/node /Applications/DevEco-Studio.app/Contents/tools/hvigor/bin/hvigorw.js --sync -p product=default --analyze=normal --parallel --incremental --daemon

这条命令会同步项目的配置信息,并根据指定的产品配置(product=default)初始化工作环境。同时,它还会开启并行构建、增量构建和守护进程等功能,以提高构建效率。

3. 执行具体的构建任务

最后,使用hvigorw脚本来执行具体的构建任务。在Jenkins脚本中,可以使用以下命令来构建并打包HAR应用:

bash 复制代码
hvigorw --mode module -p product=default -p module=$moduleName@default -p buildMode=release assembleHar --analyze=normal --parallel --incremental --daemon

这条命令会根据指定的模块(module=$moduleName@default)和产品配置(product=default),以发布模式(buildMode=release)构建并打包HAR应用。同样地,它也开启了并行构建、增量构建和守护进程等功能。

四、脚本实现

将上述三个步骤整合到一个脚本中,就可以在Jenkins中执行完整的业务逻辑构建了。以下是一个示例脚本:

bash 复制代码
#!/bin/bash

# 设置DevEco Studio路径
DEVECO_STUDIO_PATH="/Applications/DevEco-Studio.app/Contents/tools"

# 初始化依赖
${DEVECO_STUDIO_PATH}/ohpm/bin/ohpm install --all --registry https://ohpm.openharmony.cn/ohpm/ --strict_ssl true

# 检查依赖安装是否成功
if [ $? -ne 0 ]; then
    echo "依赖安装失败"
    exit 1
fi

# 初始化工作环境
${DEVECO_STUDIO_PATH}/node/bin/node ${DEVECO_STUDIO_PATH}/hvigor/bin/hvigorw.js --sync -p product=default --analyze=normal --parallel --incremental --daemon

# 检查工作环境初始化是否成功
if [ $? -ne 0 ]; then
    echo "工作环境初始化失败"
    exit 1
fi

# 执行具体的构建任务
hvigorw --mode module -p product=default -p module=$moduleName@default -p buildMode=release assembleHar --analyze=normal --parallel --incremental --daemon

# 检查构建任务是否成功
if [ $? -ne 0 ]; then
    echo "构建任务失败"
    exit 1
fi

echo "构建成功"

将这个脚本保存为build.sh,并在Jenkins中配置一个执行该脚本的构建任务,就可以实现鸿蒙HAR应用的自动化构建打包了。

五、总结与展望

通过本文的介绍,我们了解了如何使用Jenkins命令行工具实现鸿蒙HAR应用的自动化构建打包。这不仅提高了开发效率,还确保了代码质量。未来,随着鸿蒙系统的不断发展和完善,自动化构建工具也将更加智能和高效。我们可以期待更多的自动化工具和插件出现,为鸿蒙应用开发提供更加便捷和高效的解决方案。

希望本文对大家有所帮助!如果你有任何疑问或建议,请随时在评论区留言。

附录一

在DevEco Studio启动或项目初始化过程中,执行以下命令:

bash 复制代码
/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin/ohpm install --all --registry https://ohpm.openharmony.cn/ohpm/ --strict_ssl true

作用是为鸿蒙(HarmonyOS/OpenHarmony)项目安装或更新所有依赖包。以下是具体解析:


1. 命令的组成部分

参数/路径 说明
/Applications/DevEco-Studio.app/.../ohpm 调用DevEco Studio内置的 ohpm(OpenHarmony Package Manager)工具,专用于管理鸿蒙生态的依赖包。
install --all 安装项目配置文件(如oh-package.json5)中定义的所有依赖项(包括dependenciesdevDependencies)。
--registry https://ohpm.openharmony.cn/ohpm/ 指定鸿蒙官方包仓库作为依赖源,确保下载合法的鸿蒙组件。
--strict_ssl true 启用严格的SSL证书验证,防止网络劫持或下载来源被篡改。

2. 该命令的典型场景

(1) 初始化项目时
  • 当首次打开项目或检测到oh_modules(依赖目录)缺失时,DevEco Studio会自动触发此命令,确保依赖完整。
  • 类似npm installyarn install的作用,但针对鸿蒙生态的包管理。
(2) 更新依赖配置后
  • 如果修改了oh-package.json5文件(如添加/删除依赖项),手动执行此命令可同步依赖。
(3) 解决依赖冲突或缺失
  • 当编译失败并提示缺少模块或版本不兼容时,重新运行此命令可尝试修复依赖树。

3. 关键注意事项

(1) 依赖源的合法性
  • 必须使用鸿蒙官方仓库(https://ohpm.openharmony.cn/ohpm/)以确保依赖包与鸿蒙系统兼容。
  • 不要随意切换第三方仓库,否则可能引入非鸿蒙适配的代码,导致编译失败。
(2) --strict_ssl true的作用
  • 若本地网络有SSL证书拦截(如公司代理),可能需要临时关闭此参数(设为false),但会降低安全性。
  • 推荐优先配置系统信任的证书,而非禁用SSL验证。
(3) 与npm的区别
  • ohpm是鸿蒙专用的包管理器,与Node.js的npm无直接关系。
  • 鸿蒙的Native模块(如C++库)和HAR/HSP包必须通过ohpm管理 ,无法使用npm替代。

4. 常见问题

Q1: 能否省略此命令?
  • 。除非项目无任何依赖项,否则缺少依赖会导致编译失败(如ERROR: ENOENT: no such file)。
Q2: 执行失败怎么办?
  • 步骤1:检查网络
    确保能访问https://ohpm.openharmony.cn,尤其注意代理或防火墙设置。

  • 步骤2:清理缓存

    bash 复制代码
    rm -rf ./oh_modules  # 删除依赖目录
    ohpm clean           # 清理ohpm缓存
  • 步骤3:手动指定环境
    若系统全局安装了其他Node.js版本,可能路径冲突,应直接使用DevEco Studio内置的ohpm和Node.js。


5. 总结

此命令是鸿蒙项目依赖管理的核心步骤,确保所有模块和工具链正确安装。

如果编译过程中出现依赖相关错误(如uv_cwdENOENT),优先尝试重新执行此命令并检查网络环境。

附录二

在鸿蒙(HarmonyOS/OpenHarmony)应用开发中,您提到的命令是用于调用 DevEco Studio 内置的 hvigor 工具来执行项目构建任务。以下是该命令的详细解析:


命令结构

bash 复制代码
/Applications/DevEco-Studio.app/Contents/tools/node/bin/node 
/Applications/DevEco-Studio.app/Contents/tools/hvigor/bin/hvigorw.js 
--sync 
-p product=default 
--analyze=normal 
--parallel 
--incremental 
--daemon

各部分作用

1. nodehvigorw.js 路径
  • /Applications/DevEco-Studio.app/.../node
    使用 DevEco Studio 内置的 Node.js 环境,避免因系统全局 Node.js 版本不兼容导致问题。
  • /Applications/DevEco-Studio.app/.../hvigorw.js
    hvigor 是华为为鸿蒙开发定制的构建工具(类似 Android 的 Gradle),负责管理依赖、编译代码、打包资源等任务。

2. 核心参数解析
参数 作用
--sync 同步项目配置,确保所有模块的依赖关系和配置(如 build-profile.json5)一致。常用于首次拉取代码或修改依赖后。
-p product=default 指定构建的 产品形态default 表示使用默认配置(如调试模式),其他可能值如 release(发布模式)。
--analyze=normal 启用构建过程分析,但仅输出常规日志(非详细)。若需调试,可改为 --analyze=verbose
--parallel 启用多线程并行构建,加快大型项目的编译速度。
--incremental 增量编译模式,仅编译修改过的文件,减少构建时间。但若缓存异常可能导致失败,需定期清理(如 hvigor clean)。
--daemon 以守护进程模式运行 hvigor,首次启动稍慢,但后续构建会复用进程提升速度。

该命令的典型场景

1. 项目初始化或配置变更后
  • 首次拉取代码或修改 build-profile.json5oh-package.json5 等文件后,需执行 --sync 确保配置同步。
2. 日常开发构建
  • 使用 --incremental--parallel 加速构建,适合频繁修改代码的场景。
3. 调试构建问题
  • 若构建失败,移除 --incremental--daemon 进行全量编译,或添加 --debug 参数获取详细日志。

常见问题与注意事项

1. 增量编译失败
  • 现象:修改代码后构建报错,但全量编译成功。

  • 解决 :清理缓存重新同步:

    bash 复制代码
    /Applications/DevEco-Studio.app/.../hvigorw.js clean
2. 守护进程(daemon)冲突
  • 现象:修改环境变量或工具链后,构建行为异常。

  • 解决 :终止守护进程:

    bash 复制代码
    /Applications/DevEco-Studio.app/.../hvigorw.js --stop
3. 并行编译(parallel)的资源竞争
  • 现象 :多模块同时编译时,偶发文件锁冲突(如 ENOENTEACCES)。

  • 解决 :降低并行线程数(默认根据 CPU 核心数自动分配):

    bash 复制代码
    --parallel --max-workers=2  # 限制为 2 个线程

与 DevEco Studio 图形化操作的关系

  • GUI 操作等价性 :在 DevEco Studio 中点击 Build > Build Project 时,IDE 底层会生成类似命令,但可能省略部分参数(如默认启用 --daemon)。
  • 手动调用的优势:在自动化脚本或调试复杂问题时,手动指定参数更灵活。

总结

此命令是鸿蒙项目构建的核心步骤,通过 hvigor 工具实现:

  1. 同步配置--sync
  2. 按产品形态构建-p product=default
  3. 优化构建速度--parallel--incremental--daemon

若构建不稳定,可尝试以下操作:

  1. 清理缓存:hvigor clean

  2. 关闭增量编译:移除 --incremental

  3. 查看详细日志:添加 --debug 参数。

附录三 .鸿蒙构建-Error: ENOENT: no such file or directory, uv_cwd

工程在进行构建的时候遇到这个问题:Error: ENOENT: no such file or directory, uv_cwd

详细报错其实是在 node 里面,因此在网络上主要有以下几种解决方式

  1. 如果是在终端运行的话,可以重启终端,看是否解决

  2. 暴力终止所有 node 进程:killall node (本人用此方法解决问题)

  3. 重启电脑。还真别说,我觉得靠谱。跟上一种方法有异曲同工之妙。但如果你不想每次都重启,可能还是优先看看上面的方法吧

上面参考了其他博主的问题。

相关推荐
坚果派·白晓明10 小时前
三方库ada
harmonyos·鸿蒙·openharmony
星纬智联技术10 小时前
GEO E2E 自动化验证测试文章
运维·自动化·geo
坚果派·白晓明10 小时前
三方库 nanomsg
华为·harmonyos
爱敲代码的菜菜11 小时前
【测试】自动化测试
css·selenium·测试工具·junit·自动化·xpath
奶茶精Gaaa12 小时前
AI实战(二)生成ui自动化
功能测试·学习·自动化
弓.长.13 小时前
ReactNative for OpenHarmony项目鸿蒙化三方库:react-native-pdf — PDF文档查看器
react native·pdf·harmonyos
厦门辰迈智慧科技有限公司13 小时前
高边坡自动化监测要点分析
自动化·高边坡监测·边坡监测
开开心心就好15 小时前
绿色版PDF多功能工具,支持编辑转换
人工智能·windows·pdf·ocr·excel·语音识别·harmonyos
rosmis16 小时前
自动化文献检索与下载工作流:基于 Playwright 的 RPA 实践方案
运维·自动化·rpa
云和数据.ChenGuang16 小时前
鸿蒙餐饮系统:全场景智慧餐饮新范式
人工智能·机器学习·华为·数据挖掘·harmonyos·鸿蒙·鸿蒙系统