Linux GitLab如何进行自动化测试
导读:Linux GitLab自动化测试实操指南 一 架构与Runner部署 在 Linux 服务器上安装 GitLab Runner,可基于 Docker 或 Shell 执行器;安装完成后在项目的 Settings → CI/CD → Ru...
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
- Debian/Ubuntu:
- 注册示例(按需选择 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
- test
- build:
- stage: build
- script:
- echo “Building…”
- mvn package
- artifacts:
- paths:
- target/*.jar
- paths:
- test:
- stage: test
- script:
- echo “Running unit tests…”
- mvn test
- stages:
- 常用增强:
- 使用 Docker 镜像 保证环境一致性(如 node:latest、maven:3-openjdk-17)。
- 通过 artifacts.reports.junit 上传 JUnit XML 报告,在 GitLab 界面展示测试概览与失败定位。
三 典型测试场景配置
- Java + Maven
- test:
- stage: test
- script:
- mvn test
- artifacts:
- reports:
- junit: target/surefire-reports/TEST-*.xml
- reports:
- test:
- Node.js + Jest/Mocha
- test:
- stage: test
- image: node:18
- script:
- npm ci
- npm test – --ci --reporters=jest-junit
- artifacts:
- reports:
- junit: reports/junit.xml
- reports:
- test:
- Python + Pytest
- test:
- stage: test
- image: python:3.11
- script:
- pip install -r requirements.txt pytest pytest-xdist
- pytest tests/ --junitxml=report.xml
- artifacts:
- reports:
- junit: report.xml
- reports:
- test:
- 端到端 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:
- paths:
- playwright-report/
- reports:
- junit: results.xml
- paths:
- test:e2e:
- 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:
- junit: report.xml。
- prepare:
- 准备阶段安装浏览器与驱动,测试阶段以 Xvfb 或无头模式运行,并生成 JUnit/HTML 报告与失败重试:
四 优化与质量门禁
- 缓存依赖加速构建:
- cache:
- paths:
- .cache/pip
- node_modules/
- paths:
- cache:
- 并行与切片:
- test:
- parallel: 4
- script: pytest tests/ -n 4
- test:
- 失败重试与稳定性:
- script:
- pytest --reruns 2 --reruns-delay 5
- script:
- 产物留存与可追溯:
- artifacts:
- paths:
- target/
- reports/
- logs/
- screenshots/
- reports:
- junit: “**/TEST-*.xml”
- expire_in: 7 days
- paths:
- artifacts:
- 环境隔离与一致性:优先使用 Docker 镜像;UI 测试使用 Headless 或 Xvfb,并固定浏览器与驱动版本。
五 触发与结果查看
- 触发方式:每次 push/merge request 会自动触发;也可在 CI/CD → Pipelines 手动运行或重试。
- 查看结果:在 Pipelines → Jobs 查看日志;在 Tests 选项卡查看 JUnit 报告摘要、失败用例与堆栈;HTML 报告与截图等可通过 artifacts 下载或页面展示。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux GitLab如何进行自动化测试
本文地址: https://pptw.com/jishu/771135.html
