文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何构建有效的 CI/CD 管道

2024-11-30 18:19

关注

持续集成/持续交付 (CI/CD) 流水线已成为发布软件不可或缺的一部分,但它们的用途往往会被误解。在许多情况下,CI/CD 管道被视为解决发布问题的解毒剂,但实际上,它们的有效性取决于它们所代表的底层发布过程。在本文中,我们将了解创建有效 CI/CD 管道的几个简单步骤,包括如何捕获和简化现有发布流程,以及如何将该流程转换为精益管道。

捕获发布过程

CI/CD 管道并不是解决我们所有发布瓶颈的灵丹妙药,如果底层发布过程出现问题,它也只能提供最小的改进。对于软件,发布过程是团队用来将代码从源代码文件中获取到可以交付给客户的打包产品的一组步骤。该过程将反映每个产品和创建产品的团队的 业务需求。

虽然发布过程的细节会有所不同——有些可能需要某些安全检查,而另一些可能需要第三方的批准——但几乎所有软件发布过程都有一个共同的目的:

每个向客户交付产品的团队都有一些发布流程。这个过程可以从“通过电子邮件将工件发送给吉姆以便他可以测试它们”到非常严格和正式的过程,团队或经理必须在过程中的每个步骤完成时签字。

写在纸上

尽管存在这种差异,但开发有效的 CI/CD 管道的第一个也是最关键的步骤是捕获发布过程。最简单的方法是绘制一组框来捕获发布过程中的步骤,并绘制从一个步骤到另一个步骤的箭头以显示一个步骤的完成如何启动另一个步骤的开始。这幅画不必过于正式;它可以在一张纸上完成,只要捕获当前实践的过程即可。图 1 说明了一个简单的发布过程,该过程对许多产品都很常见:

图 1:基本发布流程 - 捕获当前发布流程的步骤是创建管道的第一步

说同一种语言

一旦捕获了当前的发布过程,下一步就是使该过程正式化。在谈到发布过程以及最终的 CI/CD 管道时,使用通用的本地语言或领域语言非常重要。

对于管道,基本词典是:

CI/CD 管道只是正式发布流程的自动化实现。因此,如果我们希望创建一个有效的 CI/CD 流水线,那么首先优化我们的发布流程是必不可少的。

优化发布流程

由于我们的 CI/CD 管道反映了我们的发布流程,因此创建有效管道的最佳方法之一是在从中派生管道之前优化发布流程本身。我们可以对发布流程进行三个关键优化,从而为有效的管道带来好处:

  1. 简化流程——我们应该尽量减少任何会减慢发布流程的瓶颈或人为步骤。
  1. 自动化一切——理想的发布过程没有手动步骤。虽然这并不总是可能的,但我们应该自动化每一个可能的步骤。
  1. 缩短发布周期——我们应该尽可能频繁地发布我们的产品。即使最终可交付成果没有交付给客户或用户(例如,我们每天都在构建产品,但每周只向客户发布一次产品),我们也应该经常运行我们的发布流程。如果我们目前每天执行一次发布过程,我们应该努力在每次提交时完成它。

优化发布流程可确保我们在精简高效的基础上构建 CI/CD 管道。发布过程中的任何膨胀都会反映在我们的管道中。优化我们的发布流程将是迭代的,并且需要不断努力以确保我们在添加更多步骤以及现有步骤变得更大和更全面时保持精益发布流程。

构建管道

一旦我们有了优化的发布流程,我们就可以实施我们的管道。为了创建有效的 CI/CD 管道,我们应该遵循三个重要的建议:

  1. 不要追随时尚——有无数的噱头和时尚在争夺我们的注意力,但我们的职业责任是根据对我们的需求最有效的东西来选择我们的工具和技术。普遍性和流行性并不能保证有效性。目前,CI/CD 管道工具的选项包括GitHub Actions、GitLab CI/CD和Jenkins。这不是一个完整的列表,但它确实提供了一个稳定的起点。
  2. 保持简单性——理想情况下,每个步骤都应该运行一个脚本,管道配置中没有硬编码命令。管道配置应该被认为是胶水并且应该包含尽可能少的逻辑。例如,.gitlab-ci.yml图 1 中发布过程的理想 GitLab CI/CD 配置 ( ) 类似于: build: stage: building script: - /bin/bash build.shunit-tests: stage: unit-testing script: - /bin/bash run-unit-tests.shintegration-tests: stage: integration-testing script: - /bin/bash run-integration-tests.sh...deploy: stage: deployment script: - /bin/bash deploy.sh --env production:443 --key ${SOME_KEY}这个理想并不总是可能的,但这应该是我们努力的目标。
  3. 收集反馈——我们的管道不仅应该产生工件,还应该产生报告。这些报告应包括:

这种反馈使我们不仅可以优化我们的产品,还可以优化构建它的管道。

通过遵循这些提示,我们可以构建一个有效的管道来满足我们的业务需求,并为我们的用户和客户提供最大的价值和最少的摩擦。

结论

CI/CD 管道并不是解决我们所有发布问题的灵丹妙药。虽然它们是可以显着改进我们软件发布的重要工具,但它们的有效性取决于我们的底层发布流程。为了创建有效的管道,我们需要简化我们的发布流程并保持警惕,以便我们的管道尽可能保持简单和自动化。

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯