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

如何用.gitlab-ci.yml配置GitLab流水线的Selenium Cucumber框架及报错解决

GitLab CI配置Selenium Cucumber框架及依赖错误修复

一、.gitlab-ci.yml配置流程

  • 选适配的Runner镜像:优先用自带Java、Maven的镜像,比如maven:3.8.6-openjdk-11;如果要跑UI测试,要么用预装Chrome/Firefox的镜像,要么在流水线里手动装浏览器和驱动。
  • 拆分流水线阶段:一般分build(构建)、test(测试)两个核心阶段
  • 完整示例配置:
stages:
  - build
  - test

# 构建阶段:编译代码,跳过测试节省时间
build_job:
  stage: build
  image: maven:3.8.6-openjdk-11
  script:
    - mvn clean compile -DskipTests
  artifacts:
    paths:
      - target/ # 把构建产物传给测试阶段

# 测试阶段:运行Cucumber测试
test_job:
  stage: test
  image: maven:3.8.6-openjdk-11
  dependencies:
    - build_job # 依赖构建阶段的产物
  before_script:
    # 安装Chrome浏览器和驱动(跑UI测试必备)
    - apt-get update && apt-get install -y chromium chromium-driver
    - export CHROME_BIN=/usr/bin/chromium
    - export CHROMEDRIVER=/usr/bin/chromedriver
  script:
    - mvn test -Dcucumber.options="--tags @UI" # 可按需指定要跑的Cucumber标签
  artifacts:
    paths:
      - target/cucumber-reports/ # 保存测试报告
    reports:
      junit: target/surefire-reports/*.xml # 让GitLab识别JUnit测试结果

二、依赖连接重置错误的解决办法

你遇到的错误是:

[ERROR] Failed to execute goal on project Samplemaven: Could not resolve dependencies for project org.example:Samplemaven:jar:1.0-SNAPSHOT: Failed to collect dependencies at io.cucumber:cucumber-java:jar:7.2.3: Failed to read artifact descriptor for io.cucumber:cucumber-java:jar:7.2.3: Could not transfer artifact io.cucumber:cucumber-java:pom:7.2.3 from/to central (http://repo.maven.apache.org/maven2): Connection reset -> [Help 1]

按下面的步骤挨个排查:

  1. 换HTTPS的中央仓库地址:把pom.xml里的中央仓库地址从http://repo.maven.apache.org/maven2改成https://repo.maven.apache.org/maven2,HTTP协议现在很多环境会拦截或不稳定。
  2. 用国内Maven镜像:如果Runner网络访问官方仓库慢,在项目根目录建settings.xml,配置阿里云镜像:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <mirrors>
    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>central</mirrorOf>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
  </mirrors>
</settings>

然后在流水线的script命令里加上-s settings.xml,比如mvn test -s settings.xml,强制用这个配置拉依赖。
3. 检查Runner网络连通性:在流水线的before_script里加一句curl https://repo.maven.apache.org/maven2,看看能不能正常访问仓库地址,确认网络没被防火墙或代理挡住。
4. 强制更新依赖缓存:执行mvn clean install -U,让Maven跳过本地缓存,重新拉取最新的依赖描述文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:36:58