CI / CD模式和反模式。 第一部分

大家好! 朋友们,在冬天的最后一天,我们将在“ DevOps实践和工具”课程上推出新的课程。 预期课程的开始,我们将与您分享文章的第一部分:“ CI / CD模式和反模式”。



部署管道任务包括三个部分:

  • 可见性:供应链的所有方面(创建,部署,测试和发布)对于团队成员都是可见的,并可以促进协作。
  • 反馈:团队成员尽快发现问题,以便尽快解决。
  • 连续部署:使用全自动过程,您可以在任何环境中部署和发布任何版本的软件。



在上面的“部署管道”图中,所有模式都有上下文。 有些模式涵盖了该管道的多个阶段,因此我选择了最常使用它们的阶段。

1.1配置管理-模式和反模式

1.1.1自定义第三方软件

  • 模式:评估和使用可以轻松配置,部署和自动化的第三方软件。
  • 反模式:不能在外部配置的软件。 没有要求命令才能使用GUI的API或命令行界面的软件。

1.1.2配置目录

  • 模式:支持每个应用程序的所有参数的目录,更改这些参数的方式以及每个应用程序的存储位置。 自动目录创建是构建过程的一部分。
  • 反模式:未记录配置参数。 所有应用程序和其他资产的目录都是本地的,难以描述的“民俗”。

1.1.3主线

  • 模式:减少合并,通过在主线工作来控制活动代码行的数量。
  • 反模式:每个项目有多个分支。

1.1.4每日合并

  • 模式:在主线中进行的更改至少每天都应用于所有分支。
  • 反模式:每周或每天少于一次合并所有迭代。

1.1.5安全配置

  • 模式:配置信息存储在安全,可远程访问的位置,例如数据库,目录或注册表中。
  • 反模式:打开文本密码和/或一台计算机或共享资源。

1.1.6仓库

  • 模式:所有源文件(可执行代码,配置,主机环境,数据)都通过版本控制上载到存储库。
  • 反模式:某些文件已压缩,而其他文件(例如,环境配置或数据更改)未压缩。 检入可以在构建或部署过程中重新创建的二进制文件。

1.1.7短期分支机构

  • 模式:分支应该短暂存在,理想情况下,应保留几天,且迭代不超过一次。
  • 反模式:分支的生存期超过迭代。 产品功能的分支,发布后仍​​存在。

1.1.8团队环境

  • 模式:使用版本控制检出项目存储库,并运行一个命令来构建应用程序并将其部署到任何可用环境中,包括本地开发。
  • 反模式:要求开发人员定义和配置环境变量。 迫使开发人员安装许多构建/部署工具。

1.1.9一种操作方式

  • 模式:管理整个系统的配置-源,配置,环境,数据。 任何更改都可以跟踪到版本控制系统中的特定修订版。
  • 反模式:系统的某些部分没有版本。 无法回滚到以前的系统软件设置。

1.2 CI持续集成-模式和反模式

1.2.1构建阈值

  • 模式:违反项目规则时,程序集将崩溃。 例如,违反体系结构,测试缓慢,违反代码编写标准。
  • 反模式:手动检查代码。 在开发周期的后期阶段检测代码质量问题。

1.2.2频繁提交

  • 模式:每位团队成员都要定期检入-至少每天一次,但最好在完成CI系统的每项任务之后。
  • 反模式:由于开发人员进行的更改数量众多,因此每天提交源文件的频率少于每天一次。

1.2.3持续反馈

  • 模式:从CI系统向跨职能团队的所有成员发送自动反馈。
  • 反模式:不发送通知; 通知被忽略; CI系统会将信息发送给每个无法使用的人。

1.2.4持续集成

  • 模式:在使用版本控制对项目存储库进行任何更改之后,将进行软件组装和测试。
  • 反模式:预定程序集,夜间程序集,定期程序集,仅在开发人员机器上的程序集,完全没有程序集。

1.2.5“停线”原则

  • 模式:尽快修复所有软件交付错误; “停下来”。 没有人签入损坏的组件,因为修复它的优先级最高。
  • 反模式:程序集长期处于损坏状态,从而阻止开发人员检查工作代码。

1.2.6独立大会

  • 模式:编写与IDE分开的构建脚本。 这些脚本由CI系统执行,因此每次更改都会执行组装。
  • 反模式:自动构建取决于IDE配置。 无法从命令行启动程序集。

1.2.7可见仪表板

  • 模式:可以查看有关交付系统的所有信息。 提供高质量的实时跨职能团队反馈。
  • 反模式:警报仅通过电子邮件发出。 反馈未发布给整个团队。

第一部分结束。

这是这种材料。 您可以在此处阅读翻译的续篇,现在我们正在等待您的评论,我们邀请您参加将于今晚举行的公开网络研讨会

Source: https://habr.com/ru/post/zh-CN440862/


All Articles