当前位置: 首页 > news >正文

Jenkins 搭建鸿蒙打包

在这里插入图片描述

1、创建流水线工程

选择 Freestyle project

在这里插入图片描述

2、配置模板仓库、凭证

配置仓库地址

[图片]

创建凭证,凭证选择账号-密码(能够访问该仓库的个人或管理员 Gitlab 账密)

在这里插入图片描述

到这里执行构建,便可以克隆仓库到工作目录

3、安装插件

3.1 Rebuilder

方便打包任务直接 Rebuild

在这里插入图片描述

3.2 Build with Parameters

方便构建任务配置参数,进行构建

在这里插入图片描述

4、子模块拉取

我喜欢把游戏资源单独放在一个仓库中,以子模块方式依赖

配置 Advanced sub-modules behaviours,拉取游戏变体

  • clone depth:克隆深度配置 1,减少克隆时间

在这里插入图片描述

5、清除工作空间

配置 Clean after checkout,情况是:不是当前分支的子模块删除(分支切换时发现子模块内容仍然存在,需要删除)

在这里插入图片描述

保险起见,确保每次构建干净,删除整个工作空间

在这里插入图片描述

6、构建命令

在 Jenkins 构建参数定义一个变量 BuildType,区分执行不同的命令构建 app 或 hap 包

在这里插入图片描述

6.1 错误:Invalid value of ‘DEVECO_SDK_HOME’ in the system environment path

Jenkins 配置环境变量 DEVECO_SDK_HOME,指向的是 DevEco Studio 安装目录下的 sdk

Jenkins -> Manager Jenkins -> System

6.2 错误:Unsupported modelVersion of Hvigor 5.0.5

使用 where 命令查看所指向的可执行文件目录

where hvigorw

本机正常工程执行,输出的是 DevEco Sdutio 安装目录下的 ../tools/hvigor/bin/hvigorw.bat

Jenkins 打包工作目录所在工程执行错误,输出的是系统环境变量配置的其他路径(这个可能是因为我之前安装其他版本时配置的 cmd-tools

解决:
原因是 Hvigorw 所执行版本不一致,删除系统环境变量的配置,使用 DevEco Sdutio 安装目录下的配置

6.3 Error Message: SDK component missing.

解决:

同样的,配置上述提到的环境变量 DEVECO_SDK_HOME,指向 DevEco Studio 安装目录下的 sdk

如果仍然不生效,配置 Jenkins 环境变量后重启 Jenkins 服务

6.4 找不到工程里面本地依赖的 har 包

在 Jenkins 中新增 Windows batch command 配置,在项目克隆下来之后,执行一次 ohpm install **.har 安装本地依赖

示例:

ohpm install entry/test.har (entry 是项目相对路径)

Tip:如果是在 DevEco 打包时报错找不到模块

注意:这个 plugin 第三方模块是 npm 包,本地依赖是 npm 包转 har 包

npm install plugin@[版本号]

6.5 找不到 ohpm

配置环境变量,执行DevEco studio 安装目录下的 ./tools/ohpm/bin

7、重置工作空间

  • 关闭 Jenkins 服务
  • 在 Jenkins 安装目录修改 jenkins.xml,指定 JENKINS_HOME 为新目录
  • 复制原先 Jenkins 工作目录所有内容到新目录(否则需要重新配置 Jenkins)
  • 重启 Jenkins 服务

重启 Jenkins 服务

按 Win + R,输入 services.msc,然后按回车。在服务列表中,找到名为 Jenkins 的服务右键重启

查看是否已修改成功

Jenkins -> Manager Jenkins -> System

8、产物归档

Jenkins 配置 Archive the artifacts,只需要配置项目的相对路径

示例:

entry/build/default/outputs/default/entry-default-signed.hap,build/outputs/default/HarmonyH5Mb2-default-signed.app

当然有时候 hap、app 产物名称可能跟对项目不同而变化,你可以通过编写鸿蒙插件对产物进行重命名
(鸿蒙插件类似 Android 的 gradle 插件,参与打包构建过程)

当然,产物支持通配符配置

entry/build/default/outputs/default/.hap,build/outputs/default/.app

9、进程占用解锁

特别是 window 环境下,并发构建容易触发进程占用工作目录下的某个文件,导致清空工作目录时无法删除文件,触发报错不能正常打包

这时候你可能需要在打包前或打包结束后对工作目录或频繁出现占用的文件进行解锁,你可以使用解锁工具 Lockhunter,支持命令行调用

其他

输出环境变量

echo %JENKINS_HOME%

查看命令路径

where hdc

Jenkins 小坑

有时候你想把一段代码放到一个Execute Windows batch command中执行,你可能会遇到前几行代码执行了,在某行代码执行完之后中断了,后面代码未执行(猜想:可能是那样代码执行完返回了退出)

解决:

Execute Windows batch command 支持配置多个,你可以把中断执行后的代码配置到一个新建的 Execute Windows batch command

http://www.lryc.cn/news/617639.html

相关文章:

  • 基于 ZooKeeper 的分布式锁实现原理是什么?
  • 车载软件架构 --- 车辆量产后怎么刷写Flash Bootloader
  • 品质检验·稽核管理·客诉管理一站式数字化平台——全星质量管理 QMS 软件系统
  • 打烊频率?阶段说了算
  • 【AI论文】R-Zero:从零数据起步的自进化推理大语言模型
  • 从源码看 Coze:Agent 的三大支柱是如何构建的?
  • AI测试平台实战:深入解析自动化评分和多模型对比评测
  • [CSP-J 2021] 小熊的果篮
  • 记录一些sonic自动化运行中的问题
  • “一车一码一池一充”:GB 17761-2024新国标下电动自行车的安全革命
  • 【C++竞赛】核桃CSP-J模拟赛题解
  • DreaMoving:基于扩散模型的可控视频生成框架
  • Android Coil3视频封面抽取封面帧存Disk缓存,Kotlin
  • 嵌入式学习的第四十八天-中断+OCP原则
  • 美股期权历史市场数据波动率分析教程
  • 软件测评中HTTP 安全头的配置与测试规范
  • U-Boot常用命令完全指南
  • 【浮点数存储】double类型注意点
  • nginx 设置二级目录-实战
  • 【LLM】OpenAI开源GPT级模型,120B及20B参数GPT-OSS
  • SQL中BETWEEN与IN的差异详解
  • 读《精益数据分析》:媒体内容平台全链路梳理
  • 【数据分析】调控网络分析:调节因子在肿瘤样本中的表达相关性与生存效应分析
  • 【k8s】k8s安装与集群部署脚本
  • 网络性能优化:Go编程视角 - 从理论到实践的性能提升之路
  • 定制化4G专网架构,满足多行业专属需求
  • 5G NR NTN 在 PHY 层和 MAC 层实现 OAI
  • PCB批量线路板厂家有哪些?
  • 2025面试题——(12)
  • Vibe Coding 自然语言驱动 AI 编程方式