在上一篇,我们讨论了持续交付流水线(英文是The continuous delivery pipeline)的第一阶段,即持续集成。在本篇文章中,我们将介绍其余的持续交付流程。在前面文章我把pipeline翻译成了管道,现在这里纠正一下,可能采用流水线翻译更好一些。什么是持续交付流水线呢?请看下面这个图。

PS:我的实际工作主要的任务就写CI和CD脚本,运行并进行测试。上面这张图,其实很简单,在云平台中,从用户下订单,到利用模板安装虚拟机,然后配置基础环境,然后安装软件服务,然后测试软件无法是否正常启动,然后给用户发邮件,通知他,环境好了可以使用。这是一个典型的环境提供和配置的业务场景,类似的还有软件补丁任务,和升级到新版本和灾难恢复和环境删除操作。这些都可以涉及到很多个Jenkins上的Job,这些Job可能是串联也可能是并联地运行。一个或者多个job其实里面包含了很多业务步骤和配置操作,这些业务步骤和配置操作,我们就需要使用Groovy语言来写pipeline代码,把上下游的任务给串接起来。CD 流水线,你就可以通过用户在云平台,根据自己需求选择下订单,然后云平台通过CD流水线,把环境按照订单要求自动化地交付到用户手中,整个流程就是一个典型地CD流水线。还有建议pipeline还是不要翻译管道或者流水线,感觉就英文pipeline最合适。

我们将讨论持续交付意味着什么,以及我们认为对于实现这一目标至关重要的五种做法。持续交付的定义是:将每个变更部署到类似生产环境并在此过程中执行自动集成和验收测试的做法。

关于持续交付的权威性描述是Jez Humble和Dave Farley的一本叫《持续交付》优秀书籍,我强烈推荐它给你们。在关于持续集成上一篇文章,我们讨论了在成功完成每个构建时创建的工件(可以理解为具体某一个模块包,例如zip文件或者jar,war文件等)。不应为测试和生产环境重建这些工件。是的,1.它们应该被构建一次,然后在所有环境中使用。这样,您就知道您的测试步骤是有效的,因为它们都使用相同的工件。

2.您的工件也不应该被允许改变。它们需要存储并以这样的方式设置权限,使它们不可变。在我在工作中构建的持续交付流水线中,我设置了权限,以便CI系统只能将工件写入工件存储库,而我们调用的部署系统Deployer只能读取工件的读取权限。我们希望工件一次构建并且由于两个原因而不可变。首先,它将在团队之间建立信任。当他们调试问题时,你需要dev和ops以及QA,所有团队都可以确信底层位在不同阶段之间不会发生变化。

是的,然后快速校验和可以证明你们都在看完全相同的工件版本。是的,第二个原因是可审计性。构建持续交付流水线的一个重要部分是,您可以在源代码管理中跟踪特定代码版本,以成功构建运行系统的工件。沿途重建或更换工件会破坏您的可审计性。在走得更远之前,让我们来谈谈工件如何流经系统。在版本控制系统中检查代码,该提交会触发CI系统中的构建。

构建完成后,生成的工件将发布到中央存储库。接下来,我们有一个部署工作流程,可以将这些工件3.部署到一个尽可能多的生产副本的实时环境中。您可以将此环境称为CI暂存,测试或预生产。此时,冒烟测试,集成测试和可接受的测试都会执行,并且应尽可能自动化实现。一旦通过所有这些测试,工件就会被发版新版本。

如果需要,可以将工件部署到生产环境中。最后,您希望拥有一个与生产环境尽可能相同的预生产环境。在云中,这真的很容易。在其他情况下,这可能会更具挑战性。此环境需要包括所有负载平衡器,网络设置,安全控制以及与生产匹配的所有数据。我们将代码移动到此环境的原因之一是进行所有难以在开发人员桌面或构建服务器上完全模拟的验收测试,冒烟测试和集成测试。

是的,这让您相信您的代码和部署过程都将在生产中发挥作用。这提出了另一个关键点。4.如果在任何时候发生失败,需要停止你们系统的流水线。是的,一个人应该能够使用Andon Cord来锁定CD Pipeline,我们之前已经讨论过了。但更重要的是,CD pipeline不应允许从一个阶段到另一个阶段的进展,而不保证最后一个阶段是否成功运行。PS,只要有一个环境出错,在没有解决问题之前,不可以进入到下一个环节。

是的,对于我们的CD流水线,我们主要实施了两项检查。首先,如果在部署系统中遇到任何故障,它将锁定并且它将通知所有团队。其次,5.部署的每个阶段都会审核前一阶段,并检查不仅没有发生错误,而且还检查它是否应该处于预期状态。我们在基础架构即代码中提到了这点,重新部署应该使您的系统处于相同的状态。是的,你可以通过使用像Docker retainers这样的可变包装机制或者像Puppet或Chef这样的配置管理工具来实现这一目标。

但这是信任和信心因素,属于Pipeline地另外一个领域。在构建连续交付管道时,我发现这五种实践非常重要。最后,一旦你计划出你的CD流水线,需要写入代码进行跟踪。

DevOps基础-5.3-持续交付:持续交付流水线相关推荐

  1. 中信建投:DevOps平台通过信通院持续交付3级评估,需求平均交付周期6.5天

    中信建投2019年末确定了"数字升级计划"作为中信建投信息科技部2020年的工作重点,把DevOps建设列为核心工作. 中信建投证券股份有限公司成立于2005年11月2日,是经中国 ...

  2. 敏捷/持续集成/持续交付/DevOps基本理论全面解析

    1 辨析敏捷/持续集成/持续交付/DevOps 2 持续集成 2.1 为何会有持续集成? 敏捷开发解决了单体应用的开发和每日构建的问题. 而单体应用拆分成微服务,就需要有一套方案来组装这些微服务,使其 ...

  3. 初学者的持续集成和交付(DevOps)

    目录 介绍 背景 先决条件 第1步--创建部署组 步骤2--在内部部署服务器中安装VSTS代理 第3步--配置构建操作 第4步--设置发布 第5步--启用CI和CD 您可能会发现一些有用的提示 1.请 ...

  4. 【DevOps研发管理方案】四:持续集成 持续交付

    目录 一.持续集成 1. 构建触发规则 2. 构建初始化 3. 构建目录 4. 全量构建 5. 构建配置 二.持续交付 1. 部署与发布模式 2. 持续部署流水线 3. 参数配置 一.持续集成 1. ...

  5. CI Weekly #5 | 微服务架构下的持续部署与交付

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

  6. 持续集成和交付流水线的反模式

    原文发表于:https://www.rea-group.com/blog/continuous-integration-and-delivery-pipeline-mistakes/ CI/CD &a ...

  7. 持续集成/持续交付(CI/CD)

    目录 全面了解持续集成/持续交付 概览 "持续"是什么意思? 什么是"持续交付管道"? 持续交付管道是如何工作的? "快速失败"是什么意思? ...

  8. Springboot Gitlab Jenkins Maven Docker 持续集成/持续交付

    Gilab安装教程 http://blog.csdn.net/chenhaifeng2016/article/details/78603216 http://blog.csdn.net/chenhai ...

  9. 某银行大型管理系统端到端持续集成和交付实践

    背景 传统的银行IT系统研发流程从需求提出到产品交付往往具有较长的研发周期,纵观银行当下面临的市场环境,个人信贷消费升级,资管需求旺盛,普惠金融成为国家战略,来自银行同业和互联网金融的压力扑面而来,谁 ...

  10. SAP开源的持续集成-持续交付的解决方案

    SAP开源的持续集成/持续交付的解决方案: (1) 一个叫做piper的github项目,包含一个针对Jenkins的共享库和一个方便大家快速搭建CI/CD环境的Docker镜像: (2) 一套SAP ...

最新文章

  1. 三维几何基础大合集(三维点积叉积、点线面、凸包)《计算几何全家桶(三)》
  2. 跟我学算法聚类(kmeans)
  3. 群晖使用Linux命令,群晖常用指令
  4. 小贝_mysql 存储过程
  5. 趣头条,或许是下一个小巨头
  6. pandas 非聚合函数
  7. 常用数据库学习资源站点
  8. JavaSE--异常信息打印
  9. ffmpeg主要数据结构及其之间的关系
  10. 《涂抹Oracle—三思笔记之一步一步学Oracle》看书笔记(第一章)
  11. 使用react-color实现前端取色器
  12. 为什么我们需要更注重源代码安全?
  13. FxFactory pro for mac(视觉特效插件包)含破解码教程
  14. 嵌入式开发需要学习哪些东西
  15. html name选择器,iframe标签的name属性
  16. pk 与fk mysql_什么是MySQL FK的正确命名约定?
  17. Oracle——删除用户以及用户下数据
  18. 送5本新出版的《剑指offer》
  19. 某某区电子政务平台需求工程方法建议
  20. LTE 中的基础概念

热门文章

  1. 广告创意设计课程 博客_博客的16个伟大的内容创意
  2. iOS 内购开(发者账号部分)
  3. 《亮剑》前传《新亮剑》
  4. Java获取当日零时零分零秒
  5. 怎样把wmv转换为mp4?
  6. ts20芯片c语言例程,种基于C语言的DSP程序通用固化方法.PDF
  7. 中国最贵的碳纤维自行车价格10大全世界最顶级自行车品牌排行榜
  8. 【Java基础知识 12】java枚举详解
  9. tensorflow实现猫狗分类项目
  10. python一次输入多个值_如何在Python的一行中从用户输入多个值?