Jenkins 作为一款开源、免费且方便扩展的自动化服务器,是很多团队 DevOps 流水线中的重要一环。通过不同开发者提供的众多插件,Jenkins 可以集成持续集成和持续交付工具链中几乎所有的工具。
定位为一站式开源持续测试平台的 MeterSphere 同样也提供了对应的 Jenkins 插件(https://github.com/metersphere/jenkins-pluginJenkins 上触发 MeterSphere 平台中维护的测试任务,将测试环节纳入到现有的流水线中,帮助我们实现持续测试的目标。)。通过这个插件我们可以在
在 Jenkins 中主要有两种类型的任务:一种是通过 UI 交互完成任务配置的自由风格任务;另一种是通过 Jenkins 提供的特定语法编写脚本的 Pipeline 类型任务。Pipeline 类型的任务不仅在创建和执行上更加灵活,而且由于所有构建过程都通过脚本方式来定义,我们可以很方便地把 Pipeline 脚本也纳入到代码仓库中进行管理,实现 “Pipeline as Code” 的效果。
MeterSphere 提供的 Jenkins 插件对这两种任务类型都进行了支持。本文主要介绍 Jenkins Pipeline 类型的任务中如何使用该插件触发 MeterSphere 中的测试任务。
安装 MeterSphere jenkins-plugin
首先,我们需要在 Jenkins 服务器上安装 MeterSphere 提供的 Jenkins 插件。安装该插件后就可以在 Jenkins 任务中添加 MeterSphere 构建的环节,然后在该环节中通过配置 MeterSphere 认证信息,并指定需要触发执行的接口测试、性能测试或测试计划。
不过目前该插件还没有上传到 Jenkins 的插件仓库中,我们需要手动下载插件文件并进行上传安装。插件下载及具体的安装流程可以参考 jenkins-plugin(https://github.com/metersphere/jenkins-pluginREADME” 部分。)仓库中的 “
创建 Pipeline 任务
插件安装完成后,就可以在 Jenkins 中创建 Pipeline 任务了。
点击 “新建 Item” 后,在该页面输入任务名称,并选择 “Pipeline” 类型,点击 “OK” 按钮,即可完成一个 Pipeline 任务的创建。
编写脚本
Jenkins Pipeline 目前支持两种语法模式,即 Declarative 声明式(在 Pipeline Plugin 2.5 中引入)和 Scripted Pipeline 脚本式。关于这两种模式的差异可以进一步参考 Jenkins 的官方文档(https://www.jenkins.io/doc/book/pipeline/#pipeline-syntax-overview)。
以 Declarative 声明式语法为例,接下来我们将介绍如何在 Jenkins Pipeline 中使用 MeterSphere 插件。
MeterSphere 插件共提供了以下参数供用户进行配置:
■ msEndpoint:MeterSphere 服务地址(例如:https://demo.metersphere.com);
■ msAccessKey:MeterSphere 上某个用户的 API Access Key;
■ msSecretKey:上述 Access Key 对应的 Secret Key;
■ workspaceId:需要触发执行的测试所在的工作空间 id;
■ projectId:需要触发执行的测试所在的项目 id;
■ method:触发执行的任务类型(testplan:执行整个测试计划,single:执行指定的某个测试任务);
■ testPlanId:测试计划 id,method 参数值为 testplan 时有效;
■ testCaseId:场景 id/接口用例 id/性能测试 id,method 参数值为 single 时有效;
■ mode:执行方式(serial:串行执行,parallel:并行执行);
■ resourcePoolId:执行测试使用的测试资源池 id。
由于插件实现方式的问题,MeterSphere 插件目前还不支持在声明式 Pipeline 中的直接引用。我们可以在声明式 Pipeline 中引入 Script 步骤, 然后在 Script 步骤块中引用 MeterSphere 插件。
具体如下图所示:
代码块如下:
pipeline {
agent any //任意选择
// agent { label 'local-host'} //指定agent
stages {
stage('Build') {
steps{
echo "building"
}
}
stage('Deploy') {
steps{
echo "deploying"
}
}
stage('Test') {
steps{
script {
meterSphere msEndpoint:'http://XXXX',
msAccessKey:'XXXXXX',
msSecretKey:'XXXXXX',
workspaceId:'XXXXXX',
projectId:'XXXXXX',
method:'testPlan',
testPlanId:'XXXXXX',
mode:'parallel',
resourcePoolId:'',
result:'metersphere'
}
script {
meterSphere msEndpoint:'http://XXXXXX',
msAccessKey:'XXXXXX',
msSecretKey:'XXXXXX',
workspaceId:'XXXXXX',
projectId:'XXXXXX',
method:'single',
testCaseId:'XXXXXX',
mode:'parallel',
resourcePoolId:'',
result:'metersphere'
}
}
}
}
}
注意:Pipeline 脚本可以直接写在编辑任务页面中;也可以存放在 Git 仓库的指定位置,在配置任务时再进行指定。
构建任务
Jenkins 任务创建完成后可以点击 “手动构建” 按钮查看效果。在构建任务的控制台日志中,可以看到指定的测试计划和接口用例已经执行完成。
同时,我们进入 MeterSphere 持续测试平台进行查看,也可以看到接口测试已经执行成功,且测试计划报告已经生成。
① 接口用例执行结果;
② 测试计划报告已经生成。