假设一个项目中有各种独立的服务,每个服务都有自己的发布周期。您的客户现在希望连接并自动化这些服务,以最大限度地减少手动流程和交付时间。这导致微服务架构中包含许多小型服务,您必须彼此独立地测试和部署这些服务。对于这样的项目需求,最佳解决方案是什么?我会在我的博客文章中告诉你。
通过持续交付改进软件交付流程
为了改进软件交付过程(即部署),我建议持续交付。这是指技术、流程和工具的集合,只需按一下按钮即可随时部署,风险极低。
持续交付
版本管理的master分支——你可以把它想象成一个主文件——始终处于可以发布的状态。您在 master 分支中发现的错误具有最高优先级,必须立即修复。
为了进行实际比较,您可以将此方法与丰田生产系统的 Andon Cord 进行比较。这是一条物理开伞索,任何项目团队成员都可以随时“拉动”。此方法会导致系统立即停止。仅当错误得到纠正后,生产系统才会重新启动。这意味着 美国电子邮件列表中的牧师 所有员工都会被阻塞,直到问题得到解决,从而可以快速解决问题,从而缩短前置时间,即第一个工作流程和最后一个工作流程之间的时间。我将向您展示如何在您的项目中使用类似的方法。首先,我们来谈谈交货时间。
交货时间的表示
绿色箭头 (a) 标记请求的开始。
蓝色箭头 (b) 表示您开始实施的点。
黄色箭头 (c) 表示工件已完成。
在绿色(1)和黄色(3)阶段,没有对实际实施进行任何操作。乍一听有点奇怪,但事实确实如此。这两个阶段用于处理票证 (1) 或播放版本中已完成并经过测试的工件。实际的概念——所谓的处理时间——属于中间范围 (2)。
顺便说一句,您应该尽可能缩短交付周期,以节省时间和财务资源 - Eliyahu M. Goldratt 已经在他 1984 年的出版物“目标”中描述了这一方面。
持续交付的技术方面
我建议您在技术上使用 Jenkins Pipelines 实现持续交付的要求。基于 Web 的软件 Jenkins 的优点是它被广泛使用,并为您提供了一个大型社区,可以帮助您快速可靠地解决问题。如果您的团队在之前的项目中已经拥有一定程度的 Jenkins 经验,那么这是另一个至关重要的优势。
Jenkins 管道由多个阶段组成,其中一个阶段由单独的语句组成。这里对您的团队没有限制,您可以发出任何 shell 或批处理命令。然后,您可以将这些组合成一个阶段中的逻辑流程步骤。
管道的阶段
上面显示的管道部分包含以下阶段:构建和测试、在开发上取消部署、在开发上部署、系统测试和继续测试。
执行
多个构建管道
开发环境的各个阶段在启动后立即自动按顺序执行。如果某个阶段失败,管道将立即停止并处于“失败”状态。
与在生产设施中一样,其中使用了上述 Andon Cord 的原理,项目中的所有环境现在都被阻止进行任何部署,直到错误得到修复。