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
按提示输入以下信息:
https://gitlab.com);Settings → CI/CD → Runners获取;linux-test-runner);tags规则(如linux、unit-test);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. 编写测试脚本
根据项目技术栈选择测试框架,常见组合如下:
npm test执行;pytest命令运行。例如,Node.js项目的package.json中添加测试脚本:
{
"scripts": {
"test": "jest --coverage"
}
}
测试脚本需与.gitlab-ci.yml中的script命令对应,确保Runner能正确执行。
5. 高级配置优化
~/.m2、npm的node_modules):cache:
key: ${CI_COMMIT_REF_SLUG} # 按分支缓存
paths:
- .m2/repository/ # Maven缓存路径
- node_modules/ # npm缓存路径
test_unit:
stage: test
script: mvn test -Dtest=*UnitTest
parallel: 2 # 并行2个Job
test_integration:
stage: test
script: mvn test -Dtest=*IntegrationTest
parallel: 2
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格式的测试结果摘要。