You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让本地连接的移动设备可被GitLab CI/CD识别调用执行测试

本地移动设备对接GitLab CI/CD执行测试实现方案

核心实现思路

GitLab CI的任务默认运行在平台共享Runner或自建服务器Runner上,和你本地主机、本地连接的移动设备网络完全隔离,无法直接访问。最稳定可落地的方案是将连接移动设备的本地主机注册为GitLab项目的专属Runner,CI调度时直接把测试任务下发到本地主机执行,自然就能调用到直连的移动设备。

具体操作步骤

  • 本地主机安装对应系统版本的GitLab Runner,安装完成后不要用默认的系统服务账号运行Runner,改成你日常登录使用的系统账号启动服务,避免出现USB设备无访问权限、找不到本地Android SDK/ADB、iOS Xcode/调试工具环境变量的问题。
  • 打开GitLab对应项目的「设置-CI/CD-Runners」页面,复制项目专属Runner的注册地址和注册令牌,在本地主机终端执行注册命令:
    gitlab-runner register
    按交互提示依次填入注册地址、注册令牌,给Runner设置专属标签(比如local-mobile-test),执行器选择shell类型即可,测试命令会直接在本地主机的shell环境运行。
  • 注册完成后修改Runner配置文件:将并发数concurrent设置为你本地同时连接的测试设备数量,Runner的拉取策略pull_policy设为if-not-present减少重复拉代码的耗时,确认builds_dir配置的构建目录是本地账号有读写权限的路径。
  • 提前配置好移动设备的调试权限:安卓设备开启USB调试、USB安装、安全调试权限,执行adb devices确认设备状态为device而非未授权状态;iOS设备开启开发者模式、信任当前主机,执行xcrun xctrace list devices能正常识别到设备信息。

CI配置适配要求

  • 在项目的.gitlab-ci.yml中,给自动化测试任务打上和本地Runner一致的标签,例如tags: [local-mobile-test],确保GitLab只会把测试任务调度到你连了设备的本地Runner上,不会误分发到其他共享Runner导致找不到设备报错。
  • 测试任务不要配置Docker镜像执行参数(即不要填写image字段),否则任务会运行在隔离容器环境中,无法读取宿主机连接的USB设备。
  • 测试脚本开头可增加设备在线校验逻辑,比如安卓任务先执行adb devices检查目标设备是否连接正常,检测失败直接终止任务,避免无效执行。

备选临时方案

如果不想长期在本地运行Runner服务,可以通过内网穿透工具把本地ADB/iOS调试端口映射到公网,在云服务器部署的Runner上通过公网地址连接本地移动设备执行测试。但这个方案延迟高、稳定性差,还存在公网暴露设备的安全风险,仅适合临时调试场景,不适合长期运行定时测试任务。

注意:定时任务触发时必须保证本地主机开机联网、Runner服务正常运行、移动设备处于解锁亮屏且正常连接本机的状态,否则任务会因为找不到可用Runner或设备执行失败。

内容的提问来源于stack exchange,提问作者JustMe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:24:16