DevOps 定义 ¶
什么是 DevOps222 ? ¶
DevOps 是产品开发中开发团队(Dev)和运维团队(Ops) 间强调沟通、集成与协作的文化,消除团队间孤岛,快速连续集成和部署产品。
-
开发团队(Dev)肩负着从无到有的设计重任,精心策划开发计划,并致力于整体系统的构建。在这个过程中,为了满足不断变化的需求和优化用户体验,系统需要持续不断地进行迭代更新。
-
运维团队(Ops) 则负责接收开发团队交付的代码,对其进行全面而严格的测试,以确保代码的质量和稳定性,随后将其部署上线,并且始终期望系统能够稳定、安全地运行,为用户提供可靠的服务。
两个目标看似不同的开发团队和运维团队,实则需紧密合作完成软件开发。开发团队完成开发交付给运维团队,运维测试评估后反馈 BUG 和返工任务,此阶段开发团队常需等待反馈,拉长开发时间、推迟周期。一种应对是让开发团队等待时转做新项目,但会使项目出最终代码的周期变长。在数字化世界,DevOps 概念出现,它对软件开发管道从构思到最终用户的整个流程至关重要,能整合流程,实现产品更新和改进的更简化、高效。
整体的软件开发流程包括:
- PLAN:开发团队根据客户的目标制定开发计划
- CODE:根据PLAN开始编码过程,需要将不同版本的代码存储在一个库中。
- BUILD:编码完成后,需要将代码构建并且运行。
- TEST:成功构建项目后,需要测试代码是否存在BUG或错误。
- DEPLOY:代码经过手动测试和自动化测试后,认定代码已经准备好部署并且交给运维团队。
- OPERATE:运维团队将代码部署到生产环境中。
- MONITOR:项目部署上线后,需要持续的监控产品。
- INTEGRATE:然后将监控阶段收到的反馈发送回PLAN阶段,整体反复的流程就是DevOps的核心,即持续集成、持续部署。
什么是 代码控制 持续集成 持续交付 持续部署? ¶
什么是代码控制?
答:版本控制(或源代码控制)是一个存储库,源代码中的所有更改都始终存储在这个代码仓库中。版本控件提供了代码开发的操作历史记录,追踪文件的变更内容、时间、人等信息忠实地了记录下来。版本控制是持续集成我和持续构建的源头。
什么是持续集成?
答: 持续集成(Continuous integration,缩写为CI)是一种软件开发实践,团队开发成员经常集成他们的工作。利用自动测试来验证并断言其代码不会与现有代码库产生冲突。理想情况下,代码更改应该每天在CI工具的帮助下,在每次提交时进行自动化构建(包括编译,发布,自动化测试),从而尽早地发现集成错误,以确保合并的代码没有破坏主分支。
什么是持续交付?
答: 持续交付(Continuous delivery,缩写为CD)以及持续集成为交付代码包提供了完整的流程。在此阶段,将使用自动构建工具来编译工件,并使其准备好交付给最终用户。它的目标在于让软件的构建、测试与发布变得了更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。
什么是持续部署?
答: 持续部署(Continuous deployment)通过集成新的代码更i改并将其自动交付到发布分支,从而将持续交付提升到一个新的水平。更具体地说,一旦更新通过了生产流程的所有阶段,便将它们直接部署到最终用户,而无需人工干预。因此,要成功利用连续部署,软件工件必须先经过严格建立的自动化测试和工具,然后才能部署到生产环境中。
💎 如何有效的实施 DevOps ? ¶
定义典型的 DevOps 工作流程,典型的 DevOps 工作流程可以简化为 4 个阶段:
-
版本控制:这是存储和管理源代码的阶段。版本控制包含代码的不同版本。
-
持续集成:在这一步中,开发人员开始构建组件,并对其进行编译,验证,然后通过代码审查,单元测试和集成测试进行测试。
-
持续交付:这是持续集成的下一个层次,其中发布和测试过程是完全自动化的。CD 确保将新版本快速,可持续地交付给最终用户。
-
持续部署:应用程序成功通过所有测试要求后,将自动部署至生产服务器上以进行发布,而无需任何人工干预。
自动化 CI/CD 相关软件 ¶
版本 | 安装方式 | 机器 | |
---|---|---|---|
Git 版本控制 | 本地安装 | ||
gitea | Docker 安装 | √ | |
jenkins | Docker 安装 | √ | |
镜像仓库 | 暂时使用华为云免费仓库 | √ | |
部署 | ansible |
💎 软件 分析 ¶
- Gitea 是一款使用 Golang 编写的可自运营的代码管理工具。
- Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行 持续集成。
- SWR 是 华为云免费镜像仓库。