RunnerGo集成CI/CD实战 – 测试流水线自动化部署指南

前言

大家好,我是CI集成专家。做CI/CD实践8年,测试集成是最关键的环节之一。RunnerGo提供了完善的API接口,可以轻松集成到各种CI/CD平台。今天分享RunnerGo集成CI/CD的实战经验。

本文章参考RunnerGo v2.3官方文档

一、RunnerGo API介绍

API能力

RunnerGo提供丰富的API接口:

API 功能
执行测试计划 触发自动化/性能测试
查询执行状态 获取测试进度
获取测试报告 下载测试报告
管理场景 创建/修改测试场景

API认证

RunnerGo使用Token认证:

bash

获取Token

curl -X POST ${RUNNERGO_URL}/api/auth/login
-H “Content-Type: application/json”
-d ‘{“username”:”admin”,”password”:”password”}’

使用Token

curl -X GET ${RUNNERGO_URL}/api/plans
-H “Authorization: Bearer ${TOKEN}”

二、Jenkins集成

创建Pipeline

groovy
pipeline {
agent any

environment {
RUNNERGO_URL = ‘http://runnergo.example.com’
RUNNERGO_TOKEN = credentials(‘runnergo-token’)
PLAN_ID = ‘plan-xxx-xxx’
}

stages {
stage(‘RunnerGo自动化测试’) {
steps {
script {
// 触发测试
def response = sh(
script: “””
curl -s -X POST ${RUNNERGO_URL}/api/plan/run
-H “Authorization: Bearer ${RUNNERGO_TOKEN}”
-H “Content-Type: application/json”
-d ‘{“plan_id”:”${PLAN_ID}”}’
“””,
returnStdout: true
).trim()

def json = new groovy.json.JsonSlurper().parseText(response)
def reportId = json.report_id

// 等待测试完成
def status = ‘running’
while (status == ‘running’) {
sleep(time: 10, unit: ‘SECONDS’)

def statusResponse = sh(
script: “””
curl -s ${RUNNERGO_URL}/api/report/${reportId}/status
-H “Authorization: Bearer ${RUNNERGO_TOKEN}”
“””,
returnStdout: true
).trim()

def statusJson = new groovy.json.JsonSlurper().parseText(statusResponse)
status = statusJson.status
}

// 检查结果
if (status != ‘success’) {
error(“测试失败”)
}
}
}
}
}

post {
always {
// 获取报告链接
sh “””
curl -s ${RUNNERGO_URL}/api/report/${reportId}
-H “Authorization: Bearer ${RUNNERGO_TOKEN}”

reports/runnergo-report.json

“””
}
}
}

三、GitLab CI集成

yaml

.gitlab-ci.yml

stages:
– build
– test

runnergo_test:
stage: test
image: curlimages/curl:latest
script:
# 触发测试
– |
RESPONSE=$(curl -s -X POST ${RUNNERGO_URL}/api/plan/run
-H “Authorization: Bearer ${RUNNERGO_TOKEN}”
-H “Content-Type: application/json”
-d ‘{“plan_id”:”${PLAN_ID}”}’)

REPORT_ID=$(echo $RESPONSE | jq -r ‘.report_id’)

# 等待测试完成
– |
while true; do
STATUS=$(curl -s ${RUNNERGO_URL}/api/report/${REPORT_ID}/status
-H “Authorization: Bearer ${RUNNERGO_TOKEN}” | jq -r ‘.status’)

if [ “$STATUS” != “running” ]; then
break
fi

sleep 10
done

# 检查结果
– |
if [ “$STATUS” != “success” ]; then
echo “测试失败”
exit 1
fi

variables:
RUNNERGO_URL: “http://runnergo.example.com”
RUNNERGO_TOKEN: ${RUNNERGO_API_TOKEN}
PLAN_ID: “plan-xxx-xxx”

四、GitHub Actions集成

yaml

.github/workflows/test.yml

name: RunnerGo Test

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
test:
runs-on: ubuntu-latest

steps:
– name: Trigger RunnerGo Test
run: |
RESPONSE=$(curl -s -X POST ${{ secrets.RUNNERGO_URL }}/api/plan/run
-H “Authorization: Bearer ${{ secrets.RUNNERGO_TOKEN }}”
-H “Content-Type: application/json”
-d ‘{“plan_id”:”${{ secrets.PLAN_ID }}”}’)

REPORT_ID=$(echo $RESPONSE | jq -r ‘.report_id’)
echo “report_id=$REPORT_ID”

> $GITHUB_ENV

– name: Wait for Test Completion
run: |
while true; do
STATUS=$(curl -s ${{ secrets.RUNNERGO_URL }}/api/report/${{ env.report_id }}/status
-H “Authorization: Bearer ${{ secrets.RUNNERGO_TOKEN }}” | jq -r ‘.status’)

if [ “$STATUS” != “running” ]; then
echo “Test completed with status: $STATUS”
if [ “$STATUS” != “success” ]; then
exit 1
fi
break
fi

sleep 10
done

– name: Download Report
if: always()
run: |
curl -s ${{ secrets.RUNNERGO_URL }}/api/report/${{ env.report_id }}
-H “Authorization: Bearer ${{ secrets.RUNNERGO_TOKEN }}”

runnergo-report.json

– name: Upload Report
if: always()
uses: actions/upload-artifact@v3
with:
name: runnergo-report
path: runnergo-report.json

五、质量门禁配置

测试失败阻断部署

groovy
stage(‘质量检查’) {
steps {
script {
// 执行RunnerGo测试
def success = triggerRunnerGoTest()

if (!success) {
error(‘质量门禁未通过,阻断部署’)
}
}
}
}

stage(‘部署’) {
// 只有质量检查通过才执行
steps {
sh ‘deploy.sh’
}
}

总结

RunnerGo CI/CD集成要点:

环节 配置
API认证 Token获取和使用
Jenkins Pipeline脚本
GitLab CI YAML配置
GitHub Actions Workflow配置
质量门禁 测试失败阻断

本系列文章完结!感谢大家持续关注RunnerGo博客。

分享到:

探索 RunnerGo 全栈测试平台

RunnerGo 是一款面向企业的全栈测试平台,集接口测试、自动化测试、性能测试、UI测试于一体,助力企业提升研发效能。

接口测试
性能测试
自动化测试
免费体验 RunnerGo