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的平台不全,版本也不更新了,真的要命
鸿蒙发展过程中,好多项目管理不过来了吧。下载也需要登录了,下载链接有效期也比较短。
应该是没考虑大家的集成需求。自己下载用吧。
更多关于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版本若不匹配会导致构建失败。


