温馨提示×

GitLab在Linux上的自动化测试怎么做

小樊
38
2025-11-10 23:29:38
栏目: 智能运维

1. 安装GitLab Runner
GitLab Runner是执行CI/CD任务的代理工具,需先在Linux服务器上安装。以Ubuntu/Debian为例,可通过以下命令快速安装:

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 gitlab-runner

对于CentOS/RHEL系统,可使用yum源安装:

curl -L --output /etc/yum.repos.d/gitlab-runner.repo https://packages.gitlab.com/gitlab/gitlab-runner/el/$(rpm -E %{rhel})/gitlab-runner.repo
sudo yum install gitlab-runner

安装完成后,启动Runner服务:sudo systemctl start gitlab-runner

2. 注册GitLab Runner
安装完成后,需将Runner注册到GitLab项目。执行以下命令:

sudo gitlab-runner register

按提示输入以下信息:

  • GitLab实例URL:你的项目所在GitLab地址(如https://gitlab.com);
  • 注册Token:从GitLab项目页面Settings → CI/CD → Runners获取;
  • Runner描述:自定义名称(如linux-test-runner);
  • 标签(Tags):用于匹配项目中的tags规则(如linuxunit-test);
  • 执行器(Executor):推荐选择shell(直接在服务器执行命令)或docker(隔离环境)。

注册成功后,Runner信息会保存在/etc/gitlab-runner/config.toml中。

3. 创建.gitlab-ci.yml配置文件
在项目根目录下创建.gitlab-ci.yml文件,定义CI/CD流水线的阶段(Stages)任务(Jobs)。基础结构如下:

stages:
  - build  # 构建阶段(可选)
  - test   # 测试阶段(核心)
  - deploy # 部署阶段(可选)

# 构建任务(示例:Maven项目)
build:
  stage: build
  script:
    - echo "Building application..."
    - mvn clean package
  artifacts:
    paths:
      - target/*.jar  # 传递构建产物到后续任务

# 单元测试任务(示例:JUnit)
test:
  stage: test
  script:
    - echo "Running unit tests..."
    - mvn test
  artifacts:
    reports:
      junit: target/surefire-reports/*.xml  # 生成JUnit格式测试报告

上述配置会依次执行构建和测试任务,测试结果会以JUnit报告形式展示在GitLab CI/CD界面。

4. 编写测试脚本
根据项目技术栈选择测试框架,常见组合如下:

  • Java项目:使用JUnit/Mockito编写单元测试,Maven/Gradle管理依赖;
  • JavaScript项目:使用Jest/Mocha编写测试,配合npm test执行;
  • Python项目:使用Pytest/Unittest编写测试,通过pytest命令运行。

例如,Node.js项目的package.json中添加测试脚本:

{
  "scripts": {
    "test": "jest --coverage"
  }
}

测试脚本需与.gitlab-ci.yml中的script命令对应,确保Runner能正确执行。

5. 高级配置优化

  • 缓存依赖:加速构建过程,避免重复下载依赖(如Maven的~/.m2、npm的node_modules):
    cache:
      key: ${CI_COMMIT_REF_SLUG}  # 按分支缓存
      paths:
        - .m2/repository/          # Maven缓存路径
        - node_modules/            # npm缓存路径
    
  • 并行测试:将测试任务拆分为多个Job并行执行(如按测试模块划分),缩短流水线时间:
    test_unit:
      stage: test
      script: mvn test -Dtest=*UnitTest
      parallel: 2  # 并行2个Job
    
    test_integration:
      stage: test
      script: mvn test -Dtest=*IntegrationTest
      parallel: 2
    
  • Docker环境:使用Docker镜像确保环境一致性(如node:18python:3.9),避免本地与服务器环境差异:
    test:
      stage: test
      image: node:18  # 使用指定Docker镜像
      script:
        - npm install
        - npm test
    

6. 查看测试结果
每次代码推送(Push)或合并请求(Merge Request)触发流水线后,可在GitLab项目页面CI/CD → Pipelines查看流水线状态。点击具体Job(如test),进入Job Logs查看详细执行日志,包括测试通过/失败数量、错误堆栈等信息。若配置了测试报告(如JUnit),可直接在Job页面查看HTML格式的测试结果摘要。

0