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.pswp.cn/pingmian/92783.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SpringBoot】02 基础入门-什么是Spring Boot?:Spring与SpringBoot

文章目录1、Spring能做什么1.1、Spring的能力1.2、Spring的生态1.3、Spring5重大升级1.3.1、响应式编程1.3.2、内部源码设计2、为什么用SpringBoot2.1、SpringBoot优点2.2、SpringBoot缺点3、时代背景3.2、分布式分布式的困难分布式的解决3.3、云原生上云的困难4、如何学习Spri…

FFmpeg 编译安装和静态安装

FFmpeg 编译安装和静态安装 简介 FFmpeg 是一个领先的多媒体框架,能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎所有人类和机器创建的格式。本指南将详细介绍如何在 CentOS 8.5.2111 系统上从源代码编译并安装 FFmpeg 6.1.1 版本。从源代码编译安装可…

人大BABEC地平线高效率具身导航!Aux-Think:探索视觉语言导航中数据高效的推理策略

作者: Shuo Wang1,3^{1,3}1,3, Yongcai Wang1^{1}1, Wanting Li1^{1}1 , Xudong Cai1^{1}1, Yucheng Wang3^{3}3, Maiyue Chen3^{3}3, Kaihui Wang3^{3}3, Zhizhong Su3^{3}3, Deying Li1^{1}1, Zhaoxin Fan2^{2}2单位:1^{1}1中国人民大学,2^…

01. maven的下载与配置

1.maven的下载与初步配置a.下载并配置仓库地址下载maven压缩包,并解压,解压后应有如下几个文件点击conf,打开settings.xml(我用的VScode打开的),我们需要声明一下内部仓库的地址,以及私服的一些…

1701. 请输出所有的3位对称数

问题描述请输出所有的 33 位对称数,对称数指的是一个整数 nn 正过来和倒过来是一样的,比如:101、121、282…101、121、282…请从小到大输出符合条件的3位对称数,每行 11 个。输入无。输出从小到大按题意输出符合条件的数&#xff…

C++算法·排序

排序的定义 这个不用说吧 就是根据某个条件对一个数列进行有序的操作 例如要求从小到大排序、从大到小排序等等 排序的分类 比较排序(Comparison(Comparison(Comparison Sorts)Sorts)Sorts) 特点:通过元素间的比较决定顺序 时间复杂度下限:O(nO(nO(n…

微服务项目中的注册中心——Nacos配置

从零开始:Nacos服务注册与配置中心实战教程 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的服务发现、配置管理工具,集注册中心与配置中心于一体,广泛应用于微服务架构。本文将从环境搭建到实战配…

日期格式化成英文月,必須指定語言環境

如果不指定Locale.ENGLISH 在有些JDK下 輸出6月 INV USD 314,791.77,DUE 25-07 [PAID USD 503,389.56 ON 2025-07-16]Mar INV USD 52,042.00,DUE 25-07 [PAID USD 52,042.00 ON 2025-08-11]所以必…

【6】Transformers快速入门:Transformer 的注意力层 是啥?

一句话看懂注意力层作用:让 AI 像人一样 “抓重点” (比如读“猫追老鼠”,自动聚焦 “追” 这个动作,忽略无关词)1. 为什么需要注意力? 问题场景(翻译例子): 英文&#x…

集合,完整扩展

目录 前言: 一、List接口 1.1 ArrayList 1.2 LinkedList 1.3 Vector 二、Set接口 2.1 HashSet 2.2 TreeSet 2.3 LinkedHashSet 三、应用选择 前言: 本篇文章重点梳理 List 接口和 Set 接口的核心内容,结合代码案例帮大家吃透它们的…

【doris基础与进阶】3-Doris安装与部署

安装前的准备 在windows系统上通过vmwareubuntu 22.04的方式进行安装,由于资源有限,在同1台机器上同时安装fe和be(broker本次不安装,极简化安装),安装版本为2.1.10,2.x版本架构不会有大的变化&a…

关于数据结构6-哈希表和5种排序算法

哈希表1哈希算法将数据通过哈希算法映射成一个键值,存取都在同一个位置实现数据的高效存储和查找,将时间复杂度尽可能降低至O(1)2哈希碰撞多个数据通过哈希算法得到的键值相同,成为产生哈希碰撞3哈希表:构建哈希表存放0-100之间的…

AWT与Swing深度对比:架构差异、迁移实战与性能优化

全面对比分析Java AWT与Swing GUI框架的架构差异、性能表现和适用场景,提供完整的AWT到Swing迁移实战指南,包含15代码示例、性能测试数据、最佳实践建议,助你做出明智的技术选型和实现平滑迁移。 Java AWT, Swing, GUI框架对比, 代码迁移, 性…

git仓库检测工具

介绍 Gitleaks 是一款用于检测git 仓库、文件以及任何你想通过 git 传递的信息(例如密码、API 密钥和令牌)的工具stdin。如果你想了解更多关于检测引擎工作原理的信息,请查看这篇博客:正则表达式(几乎)就是你所需要的一切。 ➜ ~/code(master) gitleaks git -v○│╲│…

【4】Transformers快速入门:自然语言模型 vs 统计语言模型

一句话关系总结 统计语言模型 自然语言模型的“数学基础” (就像加减乘除是数学的基础,统计模型是AI学说话的基础工具)区别对比表(小白版)维度统计语言模型自然语言模型本质用数学公式算句子概率用神经网络模仿人脑理…

[激光原理与应用-252]:理论 - 几何光学 - 传统透镜焦距固定,但近年出现的可变形透镜(如液态透镜、弹性膜透镜)可通过改变自身形状动态调整焦距。

一、液态透镜:电润湿效应驱动曲率变化基本结构液态透镜由两种互不相溶的液体(如导电水溶液与绝缘硅油)封装在透明圆筒形容器中构成。容器壁经疏水处理,使水溶液呈圆顶型聚集在中心,与硅油形成凸状曲面。工作原理电润湿…

wordpress数据库导入时的#1044错误

在wordpress网站数据库文件.sql导入到数据库时,发生错误,错误提示如下:#1044 – Access denied for user ‘wodepress_com’’localhost’ to database ‘wodepress’。 这个错误表明用户wodepress_com没有权限访问数据库wodepress。以下是解…

微服务ETCD服务注册和发现

1.什么是注册中心 注册中心主要有三种角色: 服务提供者(RPC Server):在启动时,向 Registry 注册自身服务,并向 Registry 定期发送心跳汇报存活状态。 服务消费者(RPC Client)&…

计算机网络---默认网关(Default Gateway)

一、默认网关的定义 默认网关(Default Gateway)是一个网络设备(通常是路由器、防火墙或三层交换机)的IP地址,它是本地网络中的设备访问其他网络(如外网、其他子网)时,数据报文的“第…

OpenBMC中libgpio架构与驱动交互全解析:从硬件映射到应用控制

1. libgpio概述与核心定位 libgpio作为OpenBMC中GPIO管理的核心库,扮演着连接硬件驱动与上层应用的桥梁角色。它通过标准化的接口抽象了不同硬件平台的GPIO操作细节,使得电源控制、传感器监控等关键功能能够以统一的方式访问GPIO资源。 1.1 libgpio在Ope…