Jenkins Pipeline script语法自动化测试模板及效果

首先我们先看下什么是Pipeline,pipeline作为jenkins 2.X的核心理念,是devops落地最佳实践。

什么是Jenkins的流水线?

Jenkins 流水线 (或简单的带有大写"P"的"Pipeline") 是一套插件,它支持实现和集成 continuous delivery pipelines 到Jenkins。

_continuous delivery (CD) pipeline_是你的进程的自动表达,用于从版本控制向用户和客户获取软件。你的软件的每次的变更 (在源代码控制中提交)在它被释放的路上都经历了一个复杂的过程 on its way to being released. 这个过程包括以一种可靠并可重复的方式构建软件, 以及通过多个测试和部署阶段来开发构建好的软件 (c成为 "build") 。

流水线提供了一组可扩展的工具,通过 Pipeline domain-specific language (DSL) syntax. [1]对从简单到复杂的交付流水线 "作为代码" 进行建模。

对Jenkins 流水线的定义被写在一个文本文件中 (成为 Jenkinsfile),该文件可以被提交到项目的源代码的控制仓库。 [2] 这是"流水线即代码"的基础; 将CD 流水线作为应用程序的一部分,像其他代码一样进行版本化和审查。创建 `Jenkinsfile`并提交它到源代码控制中提供了一些即时的好处:

  • 自动地为所有分支创建流水线构建过程并拉取请求。
  • 在流水线上代码复查/迭代 (以及剩余的源代码)。
  • 对流水线进行审计跟踪。
  • 该流水线的真正的源代码 [3], 可以被项目的多个成员查看和编辑。

看下笔者在企业实践中,针对自动化测试所定义的pipeline模板及效果,如下所示:

pipeline模板,注意:笔者的pipeline是基于script语法的

// 定义测试场景脚本路径变量

def testfile="./xxxxx/test_xxxx_search.py"

node {

// 初始化运行环境

stage("Init Env"){

env.PATH = "${env.VIRTUAL_ENV}:${env.PATH}"

}

// 从git拉取代码stage

stage('check out') {

checkout scm

}

// 启动测试stage

stage('Test') {

// 激活python 虚拟环境

sh ". activate"

// pytest运行测试场景,并生成html报告

sh "pytest ${testfile} --html=./logs/report.html --self-contained-html"

}

// 发布html报告

stage('Report') {

publishHTML (target: [

allowMissing: false,

alwaysLinkToLastBuild: false,

keepAll: true,

reportDir: 'logs',

reportFiles: 'report.html',

reportName: "HTML Report"

])

}

// 如果没成功,则往测试群发送钉钉通知

stage('Notify'){

script{

if( currentBuild.currentResult == "SUCCESS"){

// build success

}

else{

// build failure or abort send dingTalk

}

}

}

}

看下在jenkins上跑出来的效果:

几点说明:

1. 上图中 InitEnv、checkout、Test、Report、Notify对应前面pipeline模板代码各个stage

2. InitEnv Stage用于初始化测试环境

3. checkout 用于从git拉取测试代码到本地环境

4. Test 用于执行测试代码

5. Report用于发布测试结果到jenkins(参见下图)

6. Notify 用于根据测试结果,发布通知给用户(可以是钉钉通知、email通知、qq通知等),笔者钉钉通知如下所示

更多的交流,可以加群一起探讨

透过上面的信息,大家可以留言看看我在企业实践中用了哪些编程语言、框架、工具等

本文分享自微信公众号 - 开源优测(DeepTest)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏老码农的一亩三分地

IT兄弟连 HTML5教程 CSS3揭秘 CSS常见的样式属性和值2

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

9040
来自专栏老码农的一亩三分地

IT兄弟连 HTML5教程 CSS3揭秘 CSS常见的样式属性和值5

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

6710
来自专栏老码农的一亩三分地

IT兄弟连 HTML5教程 CSS3揭秘 CSS选择器1

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

4620
来自专栏达达前端

vue指令用法

指令式带有 v- 前缀的特殊特性 v-text和v-html都属于指令 将数据和dom做关联,当表达式的值改变时,响应式地作用在视图

5410
来自专栏Nicky's blog

SpringBoot系列之快速创建项目教程

本博客简介一下SpringBoot快速创建工程的方法,主要介绍一下Spring Initializer,Spring Initializer是IntelliJ ...

4210
来自专栏Nicky's blog

源码学习系列之SpringBoot自动配置(篇一)

ok,本博客尝试跟一下Springboot的自动配置源码,做一下笔记记录,自动配置是Springboot的一个很关键的特性,也容易被忽略的属性,因为这个属性被包...

8620
来自专栏猪圈子

Postman之Settings

# 在顶部工具栏,点击Setting图标,在下来选项中选择Settings,即可打开设置对话框。或者使用快捷键 " Ctrl + ," 即可快捷打开设置页面;如...

15030
来自专栏Nicky's blog

SpringBoot系列之YAML配置用法学习笔记

配置文件的作用:修改SpringBoot自动配置的默认值,主要是默认值,因为SpringBoot启动时会自动加载很多默认配置,详细的可以参考我之前博客源码学习系...

10450
来自专栏老码农的一亩三分地

IT兄弟连 HTML5教程 CSS3揭秘 CSS选择器2

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

6820
来自专栏健程之道

Netty - 粘包和半包(下)

之前介绍过三种解码器FixedLengthFrameDecoder、DelimiterBasedFrameDecoder、LengthFieldBasedFra...

8420

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励