温馨提示×

ubuntu gitlab自动化测试方法

小樊
51
2025-10-08 07:47:50
栏目: 智能运维

Ubuntu环境下GitLab自动化测试实施方法

1. 安装GitLab Runner

GitLab Runner是执行CI/CD作业的核心组件,需先在Ubuntu服务器上安装。常用包管理器安装(以Ubuntu 22.04为例):

# 添加GitLab Runner仓库并安装
curl -L --output gitlab-runner.deb https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh && \
sudo dpkg -i gitlab-runner.deb && \
sudo apt-get update && \
sudo apt-get install gitlab-runner

安装完成后,启动Runner服务并设置开机自启:

sudo systemctl start gitlab-runner && \
sudo systemctl enable gitlab-runner

2. 注册GitLab Runner

注册Runner与GitLab项目绑定,获取项目URL和Token(路径:GitLab项目→Settings→CI/CD→Runners):

sudo gitlab-runner register

按提示输入信息:

  • GitLab实例URL(如https://gitlab.com
  • 注册Token
  • Runner描述(如ubuntu-test-runner
  • 标签(如ubuntudocker,用于筛选作业)
  • 执行器类型(推荐dockershelldocker可实现环境隔离)

3. 创建.gitlab-ci.yml配置文件

在项目根目录创建.gitlab-ci.yml,定义测试流程的核心逻辑(以Java+Maven项目为例):

stages:
  - build
  - test
  - report

variables:
  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"

cache:
  paths:
    - .m2/repository/  # 缓存Maven依赖,加速后续构建

build_job:
  stage: build
  script:
    - echo "Compiling code..."
    - mvn clean compile
  artifacts:
    paths:
      - target/  # 传递编译产物给后续阶段

test_job:
  stage: test
  script:
    - echo "Running unit tests..."
    - mvn test
  artifacts:
    reports:
      junit: target/surefire-reports/*.xml  # 生成JUnit格式测试报告

deploy_job:
  stage: deploy
  script:
    - echo "Deploying to production..."
  only:
    - main  # 仅main分支触发部署

4. 编写测试脚本

根据项目技术栈编写测试用例,例如:

  • Java项目:使用JUnit/Mockito编写单元测试,放置在src/test/java目录;
  • Python项目:使用Pytest编写测试,放置在tests/目录;
  • JavaScript项目:使用Jest编写测试,放置在__tests__/目录。

5. 配置测试报告(可选但推荐)

为提升测试结果可读性,可将测试报告集成到GitLab界面。例如,JUnit报告(适用于Java/Maven):

test_job:
  stage: test
  script:
    - mvn test
  artifacts:
    reports:
      junit: target/surefire-reports/*.xml  # 自动解析并展示在CI/CD界面

Playwright测试报告(适用于Web端):

test_with_playwright:
  stage: test
  image: mcr.microsoft.com/playwright/python:v1.42.1  # 使用Playwright官方镜像
  script:
    - pip install playwright
    - playwright install
    - pytest tests/ --headed --timeout=30000  # 执行测试
  artifacts:
    paths:
      - playwright-report/  # 保存HTML报告
    when: always  # 无论测试通过与否都上传报告

6. 触发自动化测试

将代码推送到GitLab仓库(如main分支),Runner会自动检测.gitlab-ci.yml并执行定义的作业。也可通过Webhook实现实时触发(路径:项目→Settings→Webhooks)。

7. 查看测试结果

在GitLab项目页面→CI/CD→Pipelines,点击对应流水线可查看:

  • 各阶段(build/test/report)的执行状态(通过/失败/进行中);
  • 点击具体作业(如test_job)查看详细日志;
  • 查看测试报告(JUnit/Puppeteer等格式),直接定位失败用例。

高级优化技巧

  • 并行测试:通过parallel关键字拆分测试任务,缩短执行时间;
    test_job:
      stage: test
      script:
        - echo "Running tests in parallel..."
      parallel: 4  # 拆分为4个并行任务
    
  • 环境隔离:使用Docker镜像指定测试环境(如Python 3.9、Node.js 18);
    test_job:
      stage: test
      image: python:3.9  # 使用指定Python版本的Docker镜像
      script:
        - pip install -r requirements.txt
        - pytest
    
  • 缓存依赖:缓存Maven/Node.js依赖目录,避免重复下载;
    cache:
      key: ${CI_COMMIT_REF_SLUG}  # 按分支缓存
      paths:
        - node_modules/  # Node.js依赖
        - .m2/repository/  # Maven依赖
    

通过以上步骤,可在Ubuntu环境下实现GitLab自动化测试,覆盖代码提交→构建→测试→报告的全流程,提升开发效率和代码质量。

0