前言

随着鸿蒙 PC 终端生态的持续完善,越来越多的开发者开始尝试将鸿蒙 PC 作为日常开发的主力设备。

作为一台开发设备,除了本地工程开发之外,能够承接 CI 任务同样是衡量其可用性的重要维度。本文将介绍如何将鸿蒙 PC 接入 GitHub Actions,使其作为自托管运行器(self-hosted runner)运行 CI 工作流。

方案概述

GitHub Actions 采用典型的 Agent-Server 架构:运行器需要运行一个称为 GitHub Actions Runner 的 Agent 程序,与 GitHub 服务器保持通信,接收并执行下发的 CI 任务。

理论上,任何能够运行该 Runner 的设备都可以注册为自托管运行器。但官方 Runner 基于 .NET 构建,其跨平台支持依赖目标平台具备可用的 .NET 运行时,或预先完成 AOT 编译。目前 GitHub 并未提供面向鸿蒙系统的 AOT 版本,鸿蒙生态中也缺乏成熟稳定的 .NET 运行时(仅有社区自发移植的实验性版本)。因此,直接在鸿蒙 PC 上运行官方 Runner 存在显著障碍。

可行的替代路径主要有两条:

  1. 基于社区移植的 .NET 运行时,对官方 Runner 进行 AOT 编译或解释执行;
  2. 采用跨平台能力更强的语言重写 Runner,或复用已有的第三方实现。

本文采用第二种方案,使用社区维护的 Go 语言重写版本 github-act-runner

操作流程

github-act-runner 是用 Go 语言编写的,而鸿蒙系统在大多数情况下都能直接复用 Linux 平台的 Go 语言制品。因此我们并不需要从源码构建,只需下载 Linux 版本的制品,对它做一次二进制签名,即可成功运行。

因此我们的第一个步骤是将 Linux 制品下载到鸿蒙 PC 上并进行代码签名:

mkdir github-act-runner
cd github-act-runner
curl -LO https://github.com/ChristopherHX/github-act-runner/releases/download/v0.13.0/binary-linux-arm64.tar.gz
tar -zxf binary-linux-arm64.tar.gz
binary-sign-tool sign -selfSign 1 -inFile github-act-runner -outFile github-act-runner

关于 binary-sign-tool 的获取方式,本文不再赘述。它是 ohos-sdk 的一部分,ohos-sdk 可以通过 Harmonybrew 或其他你喜欢的方式下载。

准备好制品之后,就可以注册运行器、拉起 Agent 程序:

# 注册运行器
./github-act-runner configure --url <your-repo> --token <your-token>

# 前台拉起 Agent 程序
./github-act-runner run

如果一切正常的话,现在你在 GitHub 上面就能看到你的运行器处于 Idle 状态了。

我们可以编写一个简单的工作流来验证自托管运行器是否在正常工作:

name: System Info

on:
  workflow_dispatch:

jobs:
  show-system-info:
    runs-on: self-hosted
    steps:
      - name: Display system information
        run: uname -a

当你手动触发这个工作流,你将看到如下输出,说明它确实能成功被派发到鸿蒙 PC 上运行:

请添加图片描述

注意事项

运行器与 GitHub 服务器之间的网络稳定性直接影响任务可靠性。若执行过程中连接长时间中断,GitHub 可能判定任务失败并取消执行。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐