HarmonyOS鸿蒙Next中Command Line Tools的CI问题

HarmonyOS鸿蒙Next中Command Line Tools的CI问题 为什么你们就这么喜欢设置防爬机制去保护一个开发套件啊,让人写个GitHub Action都没法写,还得自己下载然后上传到Github,每个平台这么来一下,这么多版本要搞死去,想搞个Github Action来做门禁检查,但是防爬机制不允许,你们虽然有搞 https://repo.huaweicloud.com/harmonyos/ 用这个链接下载,但是Command Line Tools的平台不全,版本也不更新了,真的要命

5 回复

鸿蒙发展过程中,好多项目管理不过来了吧。下载也需要登录了,下载链接有效期也比较短。
应该是没考虑大家的集成需求。自己下载用吧。

更多关于HarmonyOS鸿蒙Next中Command Line Tools的CI问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


哈哈,可能是大公司的一些规矩,下周开发者大会帮你问问

这个吐槽其实在 HarmonyOS 里挺有代表性的。

从 CI/CD 的角度看,大家真正需要的是:

curl 下载 SDK
↓
缓存
↓
GitHub Action 构建

而不是:

登录华为账号
↓
网页下载
↓
本地解压
↓
上传 Release
↓
Action 再下载

目前最大的痛点

1. Command Line Tools 下载地址不稳定

官方推荐使用 Command Line Tools + sdkmgr 进行自动化构建。

但实际情况是:

developer.huawei.com

很多下载链接:

  • 需要登录
  • 有防盗链
  • URL 经常变化
  • 不适合 CI

这和:

sdkmanager
brew install
apt install

这种标准 CI 生态差距比较大。


2. repo.huaweicloud.com 并不完整

华为云镜像站确实存在:

repo.huaweicloud.com/harmonyos

repo.huaweicloud.com/openharmony

仓库。

但很多开发者发现:

某些平台缺失
某些版本缺失
更新滞后

例如仓库里能看到部分 Linux 版 commandline-tools 包,但不同版本和平台覆盖并不统一。


3. GitHub Action 无法直接拉取最新版

很多团队最后变成:

Release
 └─ commandline-tools.zip

Github Action
 └─ 下载 Release

或者:

actions/cache

缓存整个 SDK。

本质上是在自己维护一个 SDK 镜像源。


企业项目一般怎么处理

目前看到的主流方案有三种:

方案一:内部制品库(最常见)

Nexus
Artifactory
MinIO
OSS
COS

存:

commandline-tools
SDK
Node
JDK

CI 永远从内部仓库下载。

优点:

稳定
可控
版本可追溯

方案二:GitHub Release 镜像

例如:

company-devtools
 └─ Releases
      ├─ commandline-tools-6.0.1.zip
      ├─ commandline-tools-6.1.0.zip
      └─ ...

CI:

curl github-release-url

下载。

很多开源项目也是这么干的。


方案三:Docker 镜像固化

直接做:

FROM ubuntu

RUN install JDK17
RUN install Node22
RUN install Harmony SDK
RUN install hvigor

然后:

container:
  image: company/harmony-builder:6.1.0

CI 不再下载 SDK。

这是目前最舒服的方案。


官方其实是支持命令行构建的

Command Line Tools 本身就是给:

CI
流水线
自动构建

设计的。

问题不在:

工具不支持CI

而在:

下载分发体系不够CI友好

很多开发者最希望的是类似:

curl https://repo.huaweicloud.com/harmonyos/commandline-tools-linux-x64-6.1.0.zip

这种永久链接。


给华为生态比较合理的建议

如果要兼顾版权和流量控制,其实可以参考:

  • Android SDK Manager
  • Flutter SDK
  • Node.js
  • Maven Central

模式:

公开 SDK 仓库
↓
版本目录固定
↓
SHA256
↓
无需登录

然后:

sdkmgr install 6.1.0

自动下载。

这样 GitHub Actions、GitLab CI、Jenkins 都能无缝接入。

否则 HarmonyOS 开发者最终都会自己维护:

Harmony SDK Mirror

反而增加了生态成本。

从 DevOps 角度来说,你的诉求本质上是:

Command Line Tools 既然定位为 CI/CD 工具,就应该提供稳定、公开、可脚本化的下载地址,而不是要求开发者通过网页登录流程获取构建依赖。

鸿蒙Next的Command Line Tools在CI中依赖ohpm和hvigorw。需设置OHOS_SDK_HOME指向SDK路径,并确保CI环境安装了对应SDK版本。构建时使用hvigorw assembleHap,需Node.js 16+。CI的Node.js版本若不匹配会导致构建失败。

理解自动化集成的痛点。防爬机制主要用于保障全球服务稳定性与合规安全,并非限制正常使用。当前华为云镜像已提供 Command Line Tools 下载,但平台覆盖和版本更新存在滞后,团队已注意到 CI/CD 场景的诉求,并计划优化镜像完整性与及时性,后续会改善 GitHub Action 等自动化工具的获取体验。

回到顶部