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

使用GitLab Dind运行Selenoid测试失败求助

解决GitLab CI中Selenoid测试的mvn: command not found问题

核心问题分析

你的test阶段使用了docker:latest镜像,这个镜像仅包含Docker工具链,没有预装Java和Maven,所以执行mvn命令时会提示找不到。之前尝试用apt-get安装未生效,是因为docker:latest默认基于Alpine Linux,需要用apk而非apt-get包管理器。

修正后的GitLab CI配置示例

下面是适配Java Maven + Selenoid的流水线配置,解决了环境依赖问题,同时简化了Selenoid的启动流程:

image: maven:3.8-openjdk-11

variables:
  MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository"
  # Docker-in-Docker 配置
  DOCKER_HOST: tcp://docker:2375/
  DOCKER_DRIVER: overlay2
  # Selenoid 相关变量
  SELENOID_CONFIG_DIR: $CI_PROJECT_DIR/selenoid/config
  SELENOID_VIDEO_DIR: $CI_PROJECT_DIR/selenoid/video

stages:
  - build
  - test

cache:
  paths:
    - .m2/repository
    - selenoid/

build:
  stage: build
  script:
    - mvn ${MAVEN_OPTS} clean install -DskipTests

test:
  stage: test
  # 在Maven镜像中安装Docker客户端,同时保留Java/Maven环境
  before_script:
    - apt-get update && apt-get install -y docker.io
    # 创建Selenoid所需的配置和视频目录
    - mkdir -p ${SELENOID_CONFIG_DIR} ${SELENOID_VIDEO_DIR}
    # 使用cm工具生成浏览器配置文件
    - docker run --rm -v ${SELENOID_CONFIG_DIR}:/output aerokube/cm:latest-release browsers --chrome 110.0 --output /output/browsers.json
  services:
    - name: docker:20.10.16-dind
      alias: docker
    - name: aerokube/selenoid:latest-release
      alias: selenoid
      # 挂载配置和视频目录,传递环境变量
      command: ["-conf", "/opt/selenoid/config/browsers.json", "-video-output-dir", "/opt/selenoid/video"]
      volumes:
        - ${SELENOID_CONFIG_DIR}:/opt/selenoid/config
        - ${SELENOID_VIDEO_DIR}:/opt/selenoid/video
    - name: selenoid/chrome:110.0
  script:
    # 验证Selenoid状态
    - curl -s http://selenoid:4444/status
    # 执行Maven测试,指定Selenoid地址
    - mvn ${MAVEN_OPTS} clean test -Dcucumber.filter.tags=${FEATURE_TAG} -Dbrowser=chrome -Denv=${ENVIRONMENT} -Dselenide.remote=http://selenoid:4444/wd/hub
  artifacts:
    when: always
    name: "report"
    paths:
      - test-output/*
      - selenoid/video/*
    expire_in: 1 h

关键配置说明

  1. 环境依赖统一:test阶段复用顶部的maven:3.8-openjdk-11镜像,通过before_script安装Docker客户端,这样同时具备Maven和Docker环境,解决mvn命令找不到的问题。
  2. Selenoid启动优化:
    • 使用aerokube/cm工具自动生成浏览器配置文件,无需手动维护browsers.json
    • 通过volumes挂载仓库内的配置和视频目录,避免重复启动Selenoid容器
    • 直接在services中配置Selenoid的启动参数,无需额外docker run命令
  3. 测试参数传递:测试命令中添加-Dselenide.remote=http://selenoid:4444/wd/hub,确保测试用例连接到Selenoid服务。

额外注意事项

  • 确保GitLab Runner启用了Docker-in-Docker权限(配置privileged: true)
  • 如果使用Selenoid UI,可在services中添加aerokube/selenoid-ui:latest-release,并通过http://selenoid-ui:8080访问
  • 视频文件会被保存到selenoid/video目录,可通过artifacts下载查看

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:05:05