Linux GitLab如何进行自动化测试
小樊
39
2025-12-12 15:12:20
Linux GitLab自动化测试实操指南
一 架构与Runner部署
- 在 Linux 服务器上安装 GitLab Runner,可基于 Docker 或 Shell 执行器;安装完成后在项目的 Settings → CI/CD → Runners 获取 URL 与 Registration Token 进行注册。
- 常用安装方式(示例):
- Debian/Ubuntu:
- 添加仓库并安装:curl -L --output /etc/apt/trusted.gpg.d/gitlab.asc https://packages.gitlab.com/gitlab/gitlab-runner/gpgkey
echo “deb https://packages.gitlab.com/gitlab/gitlab-runner/ubuntu $(lsb_release -cs) main” | sudo tee /etc/apt/sources.list.d/gitlab-runner.list
sudo apt-get update && sudo apt-get install -y gitlab-runner
- RHEL/CentOS:
- 使用官方脚本安装:curl https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
sudo yum install -y gitlab-runner
- 注册示例(按需选择 executor:docker/shell):
- sudo gitlab-runner register --url <GitLab_URL> --registration-token --executor docker --docker-image --tag-list --run-untagged false --locked false
- 启动服务:sudo gitlab-runner start(确保开机自启与权限正确)。
二 定义流水线 .gitlab-ci.yml
- 在项目根目录创建 .gitlab-ci.yml,通过 stages 定义阶段,在 script 中编写测试命令;推送代码后会自动触发流水线。
- 示例(多阶段与产物留存):
- stages:
- build:
- stage: build
- script:
- echo “Building…”
- mvn package
- artifacts:
- test:
- stage: test
- script:
- echo “Running unit tests…”
- mvn test
- 常用增强:
- 使用 Docker 镜像 保证环境一致性(如 node:latest、maven:3-openjdk-17)。
- 通过 artifacts.reports.junit 上传 JUnit XML 报告,在 GitLab 界面展示测试概览与失败定位。
三 典型测试场景配置
- Java + Maven
- test:
- stage: test
- script:
- artifacts:
- reports:
- junit: target/surefire-reports/TEST-*.xml
- Node.js + Jest/Mocha
- test:
- stage: test
- image: node:18
- script:
- npm ci
- npm test – --ci --reporters=jest-junit
- artifacts:
- Python + Pytest
- test:
- stage: test
- image: python:3.11
- script:
- pip install -r requirements.txt pytest pytest-xdist
- pytest tests/ --junitxml=report.xml
- artifacts:
- 端到端 UI(Playwright 示例)
- test:e2e:
- stage: test
- image: mcr.microsoft.com/playwright/python:latest
- script:
- npm install -D playwright
- npx playwright install --with-deps
- npx playwright test --reporter=junit,html
- artifacts:
- SeleniumBase(Headless Chrome 示例)
- 准备阶段安装浏览器与驱动,测试阶段以 Xvfb 或无头模式运行,并生成 JUnit/HTML 报告与失败重试:
- prepare:
- stage: prepare
- image: python:3.9-slim
- before_script:
- apt-get update && apt-get install -y --no-install-recommends curl unzip wget xvfb libglib2.0-0 libnss3 libgconf-2-4 libfontconfig1
- script:
- pip install -U pip
- pip install -r requirements.txt
- seleniumbase install chromedriver
- run_tests:
- stage: test
- image: python:3.9-slim
- before_script:
- export DISPLAY=:99.0
- Xvfb :99 -screen 0 1920x1080x24 >/dev/null 2>&1 &
- sleep 3
- script:
- pytest examples/ --browser=chrome --headless=true --junitxml=report.xml --html=report.html --self-contained-html --reruns 2 --reruns-delay 5
- artifacts:
- when: always
- paths:
- report.xml
- report.html
- screenshots/
- logs/
- reports:
四 优化与质量门禁
- 缓存依赖加速构建:
- 并行与切片:
- test:
- parallel: 4
- script: pytest tests/ -n 4
- 失败重试与稳定性:
- script:
- pytest --reruns 2 --reruns-delay 5
- 产物留存与可追溯:
- artifacts:
- paths:
- target/
- reports/
- logs/
- screenshots/
- reports:
- expire_in: 7 days
- 环境隔离与一致性:优先使用 Docker 镜像;UI 测试使用 Headless 或 Xvfb,并固定浏览器与驱动版本。
五 触发与结果查看
- 触发方式:每次 push/merge request 会自动触发;也可在 CI/CD → Pipelines 手动运行或重试。
- 查看结果:在 Pipelines → Jobs 查看日志;在 Tests 选项卡查看 JUnit 报告摘要、失败用例与堆栈;HTML 报告与截图等可通过 artifacts 下载或页面展示。