1987WEB视界-分享互联网热门产品和行业

您现在的位置是:首页 > WEB开发 > 正文

WEB开发

通过JenkinsPipeline配合MeterSphere完成自动化接口测试

1987web2023-10-06WEB开发92
Jenkins作为一款开源、免费且方便扩展的自动化服务器,是很多团队DevOps流水线中的重要一环。通过不同开发者提供的众多插件,Jenkins可以集成持续集成和持续交付工具链中几乎所有的工具。

Jenkins作为一款开源、免费且方便扩展的自动化服务器,是很多团队DevOps流水线中的重要一环。通过不同开发者提供的众多插件,Jenkins可以集成持续集成和持续交付工具链中几乎所有的工具。

定位为一站式开源持续测试平台的MeterSphere同样也提供了对应的Jenkins插件(https://github.com/metersphere/jenkins-plugin)。通过这个插件我们可以在Jenkins上触发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-plugin)仓库中的README部分。

创建Pipeline任务

插件安装完成后,就可以在Jenkins中创建Pipeline任务了。

点击新建Item后,在该页面输入任务名称,并选择Pipeline类型,点击OK按钮,即可完成一个Pipeline任务的创建。

编写脚本

Jenkins Pipeline目前支持两种语法模式,即Declarative声明式(在Pipeline Plugin 2.5中引入)和Scripted Pipeline脚本式。关于这两种模式的差异可以进一步参考Jenkins的官方文档(https://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持续测试平台进行查看,也可以看到接口测试已经执行成功,且测试计划报告已经生成。

① 接口用例执行结果;

② 测试计划报告已经生成。

在 Jenkins 的插件管理-高级-上传插件,上传并安装下载好的 hpi 插件包,上传好之后,重启jenkins即可

新建自由风格项目

  1. 在自己所在项目,选择点击新建任务-构建一个自由风格的软件项目

MeterSphere-Jenkins插件实现自动化测试

  • 下一篇
  • 其中请求的http://45.55.211.79/.cache/jenkins/n2.sh脚本,将会创建/tmp/.scr文件夹,并请求下载45.55.211.79/.cache/jenkins/s.tar.gz:

    解压s.tar.gz得到如下左图所示文件夹,并运行右图中的go脚本,根据当前机器的架构,选择运行i686或x86_64。

    i686和x86_64这两个程序都是xmrig改写而成的矿机,主要在nanopool.com矿池进行挖矿。它们还会将自身写入crontab文件,每分钟执行,进行持久化,此处不再赘述。

    此外,45.55.211.79服务器上存有多种历史上曾经使用,或尚未启用的payload。