在《CI/CD | 解决流水线瓶颈、晋升编码效率的五个办法(上篇)》中,CloudBees 公司产品营销经理 Samantha Frost 介绍了可能优化软件开发团队流水线的两个解决方案。本篇文章将为大家带来余下三个挑战的解决方案。在文章的结尾处,还将介绍她抉择的解决方案。
咱们所面临的挑战是相当广泛的,咱们抉择的解决方案解决了这些问题,并且获得了可掂量的胜利,让每个人都很开心。心愿你也能在其中失去启发,为本人面临的挑战找出适宜的解决方案。
挑战 3:排查流水线执行问题(又名:无穷无尽地筛查日志 …)
即便对流水线配置进行了全面的测试和验证,它们也始终有可能无奈按预期运行。当呈现问题时(例如无奈实现构建,或耗时比预期长得多),解决问题的责任就落到了开发人员身上。
在传统的 CI 环境中对流水线执行问题进行故障排查并不是很高效的形式。通常须要开发人员查看构建日志或 CI 控制台界面,以追溯构建问题的本源。这意味着须要进行上下文切换,会对编码工作造成很大的烦扰。
咱们的解决方案是利用源代码治理(SCM)报告性能,主动将构建问题的信息推送到 GitHub 或 BitBucket 中。咱们还应用了 Slack 插件,将定向音讯间接发送给提交与 CI 作业关联代码的开发人员。因而,只有那些须要理解构建问题的开发人员才会收到告诉,不会扩散其余开发人员的注意力。其余的益处是,Slack 插件还能够将构建信息推送到 Slack。
后果如何呢?我的开发人员能够在不来到他们次要编码环境的状况下,跟踪构建状态并发现问题。咱们缩小了开发人员看到的告诉,升高了对他们的烦扰,这意外地节俭了很多工夫!
挑战 4:治理流水线依赖关系(又名:应用事件驱动流水线进行跨团队协调)
CI 流水线并不是孤立存在的。在许多状况下,一个流水线可能须要期待另一个流水线实现能力运行。传统 CI 环境中,流水线依赖关系的挑战在于开发人员必须手动跟踪多个流水线的状态,并依据状态手动触发新的作业。手动监控流水线不仅乏味,还会让开发人员分心,因为他们更违心专一于编码工作。
为此,咱们思考了一个工具,能够从咱们的 CI 流程中打消这种手动环节,无论他们在哪个团队。咱们应用了跨团队合作(Cross Team Collaboration)性能,该性能能够通过在一个流水线中生成告诉事件,而后将告诉与其余流水线共享,从而实现了流水线之间的协调。
例如,咱们有一个生成 JAR 文件的流水线。这个 JAR 文件被另一个流水线用于实现一个独立的工作。通过应用跨团队合作(Cross Team Collaboration),咱们在第一个流水线中配置了一个基于代码的事件告诉,而后在第二个流水线中配置了一个基于事件告诉的触发器。这就是一个齐全自动化的解决方案,将这两个这两个流水线连贯了起来。当 JAR 文件准备就绪时,不须要依赖治理第一个流水线的团队来告诉,每个流水线都能够放弃同步并主动执行。我不晓得你是否经验过这种状况,但咱们常常因为更新名称,而须要更新门路。因为这个简略的更改,咱们遇到了许多“门路未找到”的谬误,这是十分令人抓狂的。基于事件的触发器让流水线能够互相监听,对咱们来说是一个完满的解决方案。
挑战 5:构建基础设施的低效利用(又名:妈妈说得对,来到房间要关灯!)
在现实的状况下,企业中的每个 CI 实例只在必要时处于活动状态。当没有构建工作须要运行时,它会主动敞开或休眠,从而将基础设施资源提供给其余流水线应用。
在事实中,管制资源耗费是很艰难的。开发人员通常会让 CI 实例放弃活动状态,即便在不须要时也是如此,而底层的基础设施平台(如 Kubernetes)没有主动的办法来晓得何时应该敞开实例。后果是,真正须要资源的工作得不到资源(也就是,产生了大量对于不足容量的埋怨)。此外,咱们还得为不须要的基础设施买单。你会为此与签订估算的副总裁进行“乏味”的对话,而后转身将这种“乏味”的对话带回你的团队。这是不应该产生的,尤其是在现在自动化 CI 的时代。
咱们的解决方案是应用休眠性能,主动在一段预约义的不活跃期后敞开或休眠 CI 实例。为了设置该性能,咱们在 Kubernetes 集群(用于配置托管控制器)的 Helm 图表中启用了它。咱们配置了主动休眠,并通过界面跟踪休眠的托管控制器的状态。通过主动敞开不沉闷的托管控制器,开发人员将这些控制器占用的资源释放出来,以供理论处于活动状态的控制器应用。后果是构建更快了,因为每个构建都有更多的内存和 CPU 资源。
此外,当不沉闷的托管控制器敞开或休眠时,Kubernetes 能够主动缩减其总节点数。这升高了企业的基础架构老本。并缩小了与领取账单的人不欢快对话的次数。
将这所有做成残缺的解决方案
CI 软件应该帮忙开发人员更快,更高效地工作。然而,当开发人员不得不破费大量工夫手动设置、批改和排查 CI 流水线时,这些工具可能会变成更加麻烦的存在,成了扩散开发人员注意力、引发开发人员挫败感的本源,而他们更违心投入工夫编写代码。
为了解决咱们面临的五个挑战,咱们利用了 CloudBees CI 性能,如流水线模板、流水线模板目录、配置即代码、上下文反馈、跨团队合作和休眠托管控制器。
咱们整体解决方案的教训是,它将咱们的 CI 软件从一种累赘变成了开发人员生产力的引擎。最终的后果是在更短的工夫外向客户交付更多的价值,开发人员满意度也更高了,因为高效的 CI 意味着开发人员能够专一于他们喜爱和善于的事件——写代码。
作者:萨曼莎·弗罗斯特(Samantha Frost),CloudBees 公司产品营销经理。
文章起源:https://www.cloudbees.com/blog/lets-get-back-to-coding-5-appr…