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规则(如linux、unit-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:18、python: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格式的测试结果摘要。