Jenkins 创建流水线 (Pipeline) 项目的脚本

前一段时间在做接口测试自动化方面的工作。现在整理下,接口测试国中学到的知识,做到边学边用到实践了。下面,介绍下,把接口测试项目集成到Jenkins,建立PIpeline项目。
Pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。

环境配置:Jenkins 2.121.1

项目执行结果

其他项目构建成功后,会触发接口自动化测试项目。接口自动化测试项目分为3个阶段:Preparation,Build和Result。下图显示项目的执行效果。

新建项目,选择“流水线”项目

新建Pipeline项目很简单:Jenkins选择“新建” -> “流水线”(Pipeline)

项目配置

“General”配置和“构建触发器”配置,这里不再介绍,重点介绍Pipeline“流水线”配置,需要把构建过程用Pipeline script的形式描述
保存Pipeline script有2种方法:一种是pipeline script from SCM:需要配置SCM代码存储Git地址或SVN地址,指定script文件Jenkinsfile所在路径,每次构建job会自动去指定的目录执行script文件;一种是pipeline script,直接在Web UI的script输入框输入pipeline script语句;分别的界面如下:

PIpeline脚本

node('229') {

    stage('Preparation') {
        git credentialsId: '****', url: 'http://gitlab.***.com/***/testcase_****_APITest.git'
    }

    sleep time: 1, unit: 'MINUTES'

    stage('Build') {
        catchError {
            sh '''#!/bin/bash
            cd ..
            source httpruner_venv/bin/activate
            cd PCCashier_APITest_Dev

            hrun --dot-env-path devlop.env --html-report-name index_dev.html tests/testcases/'''
        }
        echo currentBuild.result

        if (currentBuild.result == 'FAILURE')
        {
            step([$class: 'Mailer', notifyEveryUnstableBuild: true,
            recipients: emailextrecipients([[$class: 'CulpritsRecipientProvider'],
                                          [$class: 'RequesterRecipientProvider']])])

        }
    }

    stage('Results') {
        publishHTML([allowMissing: true, alwaysLinkToLastBuild: true, includes: '**/*.html', keepAll: true, reportDir: '/home/jenkins/work/workspace/PCCashier_APITest_Dev/reports', reportFiles: 'index_dev.html', reportName: 'Html_Report', reportTitles: 'PC收银台接口测试报告'])
    }
}

第一次接触Pipeline script,肯定比较困难。Jenkins也提供了脚本生成器。可以选择需要的功能,并输入参数,可点击自动生成脚本。

接下来,简单描述脚本的注释。
node('229') 表示项目运行在Jenkins的节点229上。

stage('Preparation') 项目的Preparation阶段,主要填写接口测试项目的git库地址,用户名和密码(身份认证),这样每次执行构建,都会更新到最新的状态,执行最新的测试用例。

stage('Build') 项目的Build阶段,主要填写执行接口测试的shell脚本,并在测试执行失败时给造成构建失败的代码提交者和触发构建者发送邮件。

stage('Results') 项目的Result阶段,主要填写接口测试执行完成后,发布生成的测试报告(index_dev.html),可在Jenkins里查看,报告名是Html_Report,报告页面的标题是<PC收银台接口测试报告>。