yaml文件适合用来描述软件测试过程的步骤。当不同类型的CI过程集中在一个yaml文件时,首先碰到的一个问题是:大量重复的步骤如何进行复用?

举个例子:

  stage1:run_it:exec:- A- B- C- D1stage2:run_it:exec:- A- B- C- D2

显然,ABC步骤重复了。如果确定对于不同stage,ABC都是必备步骤。那么可以如下处理:

首先,将相同的步骤抽取成step:

  stage1:prepare:exec:- A- B- Crun_it:exec:- D1stage2:prepare:exec:- A- B- Crun_it:exec:- D2

然后,设定锚点标记:

  common: &commonprepare:exec:- A- B- Cstage1:prepare:exec:- A- B- Crun_it:exec:- D1stage2:prepare:exec:- A- B- Crun_it:exec:- D2

最后,使用锚定标记替换公共部分:

  common: &commonprepare:exec:- A- B- Cstage1:<<: *commonrun_it:exec:- D1stage2:<<: *commonrun_it:exec:- D2

关于yaml的锚定标记,哈希合并可以参考:http://zh.wikipedia.org/wiki/YAML

step by step YAML 复用相关推荐

  1. ActionScript 3.0 Step By Step系列(四):来自面向对象开发之前的呐喊:“学会写可重用的代码”...

    增强代码的可重用能力,从创建可重用的代码开始,可重用的代码则是通过从现有代码中重构加以封装,使其成为功能单一的可复用代码块.这句话笼统点说便是"封装"或"抽象" ...

  2. Followme Devops step by step

    接着上次分享的devops历程[Followme Devops实践之路], 大家希望能够出一个step by step手册, 那今天我就来和手把手来一起搭建这么一套环境, 演示整个过程! 实验环境需要 ...

  3. 【Step By Step】将Dotnet Core部署到Docker下

    一.使用.Net Core构建WebAPI并访问Docker中的Mysql数据库 这个的过程大概与我之前的文章<尝试.Net Core-使用.Net Core + Entity FrameWor ...

  4. python写一个通讯录step by step V3.0

    python写一个通讯录step by step V3.0 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数.字典.模块调用 注意问题: 1.更优美的格式化输 ...

  5. C#2.0实例程序STEP BY STEP--实例二:数据类型

    C#2.0实例程序STEP BY STEP--实例二:数据类型 与其他.NET语言一样,C#支持Common Type Sysem(CTS),其中的数据类型集合不仅包含我们熟悉的基本类型,例如int, ...

  6. 文本分类step by step(二)

    (注:如有转载请标明作者:finallyliuyu, 和出处:博客园) <文本分类 step by step(一)> 在<文本分类step by step(一)>中,我们从处理 ...

  7. 数据库设计Step by Step (9)——ER-to-SQL转化

    2019独角兽企业重金招聘Python工程师标准>>> 引言:前文(数据库设计 Step by Step (8)--视图集成)讨论了如何把局部ER图集成为全局ER图.有了全局ER图后 ...

  8. ActionScript 3.0 Step By Step系列(五):走在面向对象开发的路上,以类为基础去思考编程问题...

    面向对象的程序设计(Object-Oriented Programming,简记为OOP)是一种功能非常强大的编程方法,立意于创建软件重用代码,以类为基础去思考编程问题. ActionScript 3 ...

  9. NHibernate Step by Step:序篇 (转)

    原文出处:http://www.cnblogs.com/abluedog/archive/2006/04/15/375676.html 原文作者:abluedog 很久以前,你可能习惯了connect ...

  10. Python 调试:step into/step out/step over 的区别

    Python 调试:step into/step out/step over 的区别: 首先在PyCharm 程序中设置 " 断点 ",后点击右上角的Debug 按钮进入调试程序状 ...

最新文章

  1. 求n!中含有某个因子个数的方法
  2. OpenGL中的轨迹球问题
  3. Linux系统中使用shell判断磁盘是否格式化的方法
  4. python教程从入门到实践第八章_python:从入门到实践--第八章:函数
  5. iptables01
  6. atom配置python环境_Python编程:用VScode配置Python开发环境
  7. C语言计算总成绩和平均成绩
  8. 小D课堂 - 新版本微服务springcloud+Docker教程_3-05 服务注册和发现Eureka Server搭建实战...
  9. java 原型模式的应用_java中原型模式详解和使用方法
  10. 引入网易云音乐播放器卡片
  11. 圈子圈套,何谓成功?
  12. Katana 项目入门
  13. 为什么重写equals方法必须要重写hashCode方法
  14. Emby识别都是英文海报
  15. 服务器关闭微软小娜,win10小娜总是自动弹出怎么禁止-禁止win10小娜自动弹出的方法 - 河东软件园...
  16. smalidea动态调式Android smali代码
  17. Portraiture中文版最新mac3.5版win5.0版插件介绍
  18. 学计算机电脑选台式还是笔记本,选台式机还是笔记本?台式机和笔记本电脑选购技巧...
  19. html5如何自动复制文字,H5实现移动端复制文字功能
  20. 带你了解了解Future和CompletableFuture

热门文章

  1. 源码安装tensorflow
  2. 【TensorFlow2.0】(3) 索引与切片操作
  3. Kimera实时重建的语义SLAM系统
  4. 剑指offer:面试题14- II. 剪绳子 II
  5. 编译OpenCV 2+ with CUDA 9+
  6. 机器学习与高维信息检索 - Note 6 - 核, 核方法与核函数(Kernels and the Kernel Trick)
  7. JS加法函数,用来得到精确的加法结果(说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果)
  8. 完整的虚幻引擎超级课程:从初学者到专家
  9. djangorestframework怎么这么好用!
  10. Github上的PHP资源汇总大全