持续集成(Continuous integration,缩写为 CI)是一种软件开发实践,团队开发成员经常集成他们的工作。利用自动测试来验证并断言其代码不会与现有代码库产生冲突。理想情况下,代码更改应该每天在 CI 工具的帮助下,在每次提交时进行自动化构建(包括编译,发布,自动化测试),从而尽早地发现集成错误,以确保合并的代码没有破坏主分支。
3. 什么是持续交付
持续交付(Continuous delivery,缩写为 CD)以及持续集成为交付代码包提供了完整的流程。在此阶段,将使用自动构建工具来编译工件,并使其准备好交付给最终用户。它的目标在于让软件的构建、测试与发布变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。
4. 什么是持续部署
持续部署(Continuous deployment)通过集成新的代码更改并将其自动交付到发布分支,从而将持续交付提升到一个新的水平。更具体地说,一旦更新通过了生产流程的所有阶段,便将它们直接部署到最终用户,而无需人工干预。因此,要成功利用连续部署,软件工件必须先经过严格建立的自动化测试和工具,然后才能部署到生产环境中。
5. 什么是持续测试及其好处
连续测试是一种在软件交付管道中尽早、逐步和适当地应用自动化测试的实践。在典型的 CI/CD 工作流程中,将小批量发布构建。因此,为每个交付手动执行测试用例是不切实际的。自动化的连续测试消除了手动步骤,并将其转变为自动化例程,从而减少了人工。因此,对于 DevOps 文化而言,自动连续测试至关重要。
持续测试的好处:
a. 确保构建的质量和速度。
b. 支持更快的软件交付和持续的反馈机制。
c. 一旦系统中出现错误,请立即检测。
d. 降低业务风险。在潜在问题变成实际问题之前进行评估。
6. 什么是版本控制及其用途?
版本控制(或源代码控制)是一个存储库,源代码中的所有更改都始终存储在这个代码仓库中。版本控件提供了代码开发的操作历史记录,追踪文件的变更内容、时间、人等信息忠实地了记录下来。版本控制是持续集成和持续构建的源头。
7.什么是 Git?
Git 是一个分布式版本控制系统,可跟踪代码存储库中的更改。利用 GitHub 流,Git 围绕着一个基于分支的工作流,该工作流随着团队项目的不断发展而简化了团队协作。
8.DevOps 为什么重要?DevOps 如何使团队在软件交付方面受益?
在当今的数字化世界中,组织必须重塑其产品部署系统,使其更强大,更灵活,以跟上竞争的步伐。
这就是 DevOps 概念出现的地方。DevOps 在为整个软件开发管道(从构思到部署,再到最终用户)产生移动性和敏捷性方面发挥着至关重要的作用。DevOps 是将不断更新和改进产品的更简化,更高效的流程整合在一起的解决方案。
9.解释 DevOps 对开发人员有何帮助?
在没有 DevOps 的世界中,开发人员的工作流程将首先建立新代码,交付并集成它们,然后,操作团队有责任打包和部署代码。之后,他们将不得不等待反馈。而且如果出现问题,由于错误,他们将不得不重新执行一次,在项目中涉及的不同团队之间的无数手动沟通。
由于 CI/CD 实践已经合并并自动化了其余任务,因此应用 DevOps 可以将开发人员的任务简化为仅构建代码。随着流程变得更加透明并且所有团队成员都可以访问,将工程团队和运营团队相结合有助于建立更好的沟通和协作。
10.为什么 DevOps 最近在软件交付方面变得越来越流行?
DevOps 在过去几年中受到关注,主要是因为它能够简化组织运营的开发,测试和部署流程,并将其转化为业务价值。
技术发展迅速。因此,组织必须采用一种新的工作流程-DevOps 和 Agile 方法-来简化和刺激其运营,而不能落后于其他公司。DevOps 的功能通过 Facebook 和Netflix 的持续部署方法所取得的成功得到了清晰体现,该方法成功地促进了其增长,而没有中断正在进行的运营。
11.CI/CD 有什么好处?
CI 和 CD 的结合将所有代码更改统一到一个单一的存储库中,并通过自动化测试运行它们,从而在所有阶段全面开发产品,并随时准备部署。
CI/CD 使组织能够按照客户期望的那样快速,高效和自动地推出产品更新。简而言之,精心规划和执行良好的 CI/CD 管道可加快发布速度和可靠性,同时减轻产品的代码更改和缺陷。这最终将导致更高的客户满意度。
12.持续交付有什么好处?
通过手动发布代码更改,团队可以完全控制产品。在某些情况下,该产品的新版本将更有希望:具有明确业务目的的促销策略。
通过自动执行重复性和平凡的任务,IT 专业人员可以拥有更多的思考能力来专注于改进产品,而不必担心集成进度。
14.持续部署有哪些好处?
通过持续部署,开发人员可以完全专注于产品,因为他们在管道中的最后任务是审查拉取请求并将其合并到分支。通过在自动测试后立即发布新功能和修复,此方法可实现快速部署并缩短部署持续时间。
客户将是评估每个版本质量的人。新版本的错误修复更易于处理,因为现在每个版本都以小批量交付。
15.SCM 团队在 DevOps 中扮演什么角色?
软件配置管理(SCM)是跟踪和保留开发环境记录的实践,包括在操作系统中进行的所有更改和调整。
在 DevOps 中,将 SCM 作为代码构建在基础架构即代码实践的保护下。SCM 为开发人员简化了任务,因为他们不再需要手动管理配置过程。现在,此过程以机器可读的形式构建,并且会自动复制和标准化。
16.DevOps 使用哪些工具?描述你使用任何这些工具的经验
在典型的 DevOps 生命周期中,有不同的工具来支持产品开发的不同阶段。因此,用于 DevOps 的最常用工具可以分为 6 个关键阶段:
持续开发:Git, SVN, Mercurial, CVS, Jira
持续整合:Jenkins, Bamboo, CircleCI
持续交付:Nexus, Archiva, Tomcat
持续部署:Puppet, Chef, Docker
持续监控:Splunk, ELK Stack, Nagios
连续测试:Selenium,Katalon Studio
17.CI/CD 的一些核心组件是什么?
稳定的 CI/CD 管道需要用作版本控制系统的存储库管理工具。这样开发人员就可以跟踪软件版本中的更改。
在版本控制系统中,开发人员还可以在项目上进行协作,在版本之间进行比较并消除他们犯的任何错误,从而减轻对所有团队成员的干扰。
连续测试和自动化测试是成功建立无缝 CI / CD 管道的两个最关键的关键。自动化测试必须集成到所有产品开发阶段(包括单元测试,集成测试和系统测试),以涵盖所有功能,例如性能,可用性,性能,负载,压力和安全性。