Close

部署自动化:它是什么以及如何开始


部署自动化使用软件工具和系统将代码变更从一个软件环境转移到另一个软件环境,从而无需手动发布软件。

持续部署包含将开发环境中的代码变更实施到生产环境中的过程。这包括自动部署、持续集成 (CI)、持续测试 (CT) 和持续反馈。自动部署可标准化并简化整个软件开发生命周期阶段的代码变更。系统可以自动构建、打包、测试新的代码合并,并将其发布到临时服务器。以后的生产版本可能需要手动批准。团队可以根据自己的流程需求实现开发、质量保证、暂存和生产等环境的自动化。

部署自动化不同于构建自动化,后者致力于组装软件组件。相反,部署自动化侧重于将这些组件分发到指定环境。

自动执行软件发布在现代 DevOps敏捷开发方法中至关重要。本指南将介绍部署自动化,包括标准 CI/CD 工具,以及团队如何启动 DevOps 最佳实践。

什么是部署自动化?


部署自动化使用软件工具和系统在测试、暂存和生产环境中自动移动代码变更。诸如代码提交或合并请求批准之类的事件会触发自动部署。配置管理工具可自动执行识别、记录和跟踪硬件变更的流程。

部署自动化和 CI/CD

部署自动化对于持续集成和持续交付 (CI/CD) 管道至关重要。CI/CD 管道可以更快地自动集成、测试和发布代码变更。它将变更转移到测试和生产等不同的环境,从而将更新的代码安全地推送到最终用户端。自动化部署可确保新代码快速可靠地上线。

DevOps 包含软件开发实践,用于更快、更可靠地构建、测试和发布软件。部署自动化可消除手动流程瓶颈,并符合 DevOps 实践。

查看解决方案

适用于精英 DevOps 团队的工具

相关资料

团队结构在 DevOps 中的重要性

部署自动化的优势


自动执行部署的主要优势包括:

  • 缩短发布周期:自动化可缩短软件部署时间,以便团队可以更频繁地发布更新。
  • 减少人为错误:手动部署容易出现人为错误。自动化可最大限度地减少错误。
  • 提高可靠性:自动部署是一致的、可重复的和标准化的。
  • 提高效率:自动化可使开发人员从手动工作中解放出来。
  • 改善协作:自动化管道可提高可见性和团队间的协作。

Key principles

DevOps approaches business problems with collaboration, automation, and integration. 

One of DevOps’ primary goals is continuous delivery. Lean and agile software development methodologies strive to deliver value to customers continuously. Automation and integration support smaller, more focused releases, which help businesses increase velocity without compromising reliability. 

Lean and agile development teams share ideas, work together to deliver solutions, and continuously improve products and processes. DevOps’ commitment to cross-functional collaboration throughout the product lifecycle makes it a natural fit for Lean and agile teams. 

Jira Software’s Open DevOps supports agile teams focused on shipping and operating high-quality software with out-of-the-box Open DevOps features.

如何执行自动部署


自动部署对于简化 DevOps 管道至关重要。它们有助于减少人为错误、提高团队工作效率和缩短迭代周期。

该流程包括代码构建、测试和部署等关键步骤。更短的迭代时间有助于团队改进并针对客户反馈快速做出响应。

自动软件部署包括以下步骤:

  1. 将代码变更提交到 Git 等版本控制系统。
  2. 代码提交触发自动构建过程。
  3. 自动测试新的构建构件。
  4. 如果测试成功,则将构建构件部署到暂存环境中进行进一步测试。
  5. 批准后,将变更部署到生产环境。
  6. 收集指标以跟踪部署。

Open DevOpsBitbucket Pipelines 可进一步简化该流程。Open DevOps 提供了一个全面的自动化框架,可促进协作。它可以适应越来越复杂的项目,同时降低人为错误的风险并提高工作效率。

Bitbucket Pipelines 提供与 Bitbucket 存储库的持续集成。它支持将配置即代码用于版本控制。Bitbucket 环境中的内置集成支持简化协作和代码可追溯性。

Focus

SRE focuses on the stability of the tools and features in production. It seeks to maintain low failure rates and high reliability for end users. This includes system scalability and robustness.

DevOps focuses on using a collaborative approach for building tools and features. It strives to identify and implement the best ideas by including the development and operations teams.

Responsibilities

SRE’s primary responsibility is system reliability. Regardless of the features deployed to production, SRE ensures they don't cause infrastructure issues, security risks, or increased failure rates.

DevOps is responsible for building the features necessary to meet customer needs. Unlike older approaches, DevOps increases its efficiency through collaboration across the development and operations teams.

Objectives

SRE strives for robust and reliable systems that allow customers to perform their jobs without disruption.

DevOps aims to deliver customer value through streamlining the product development lifecycle and accelerating the rate of product releases.

Team structure

SRE teams are often highly specialized with a much narrower focus than DevOps teams. SRE may include security specialists whose primary concern is protecting business data and complying with regulations.

DevOps, however, integrates and collaborates across development and operations to collect and implement the best possible solutions. With more varied input, teams can identify and solve problems before they reach production.

Process flow

SRE views the production environment as a highly-available service. Its processes focus on increasing reliability and decreasing failures. This could include security threats and failures from newly deployed features and integrations.

DevOps operates like an Agile development team. It designs processes for continuous integration and faster delivery. This includes breaking large projects into smaller chunks of work and generating and prioritizing ideas based on customer value.

部署自动化工具


部署自动化工具可帮助公司自动向生产环境发布新软件版本。这可以提高软件发布的速度和可靠性,并降低出错的风险。

Atlassian 提供可无缝协作的部署自动化工具,包括 Jira Product Discovery、Jira Software 和 Bitbucket Pipelines。

Jira Product Discovery 是一款优先级排序和路线图绘制工具,可帮助团队决定下一步要构建什么。

Jira Software 是一款项目管理工具,团队使用它来跟踪部署项目的进度。

Bitbucket Pipelines 是一个持续集成 (CI) 和持续交付 (CD) 平台,可自动执行从测试到部署的整个部署流程。

开始使用 Bitbucket Pipelines,实现存储库的自动部署。

部署自动化中的常见挑战


部署自动化会面临一些常见的挑战。团队可能需要更多的测试自动化来验证代码变更。单元、集成、系统、回归、负载和其他软件测试可以验证新的代码变更。

但是,团队可能需要更多地依赖耗时且一致的手动测试。不同类型的软件测试缺乏测试自动化,这会造成瓶颈。

其他挑战还包括在集成工具时遇到困难和文档不充分。自动化可能会带来新的安全风险,例如数据泄露、隐私风险和供应链攻击。

从小步骤开始。在集成测试上进行投资,确保所有部署流程元素都能很好地协同工作。使用配置管理最佳实践来保持一致性和可预测性。全面的测试自动化可让您在部署之前对代码充满信心。

部署自动化的最佳实践


对源代码的每一次变更都使用版本控制。通过自动化软件测试(例如单元和集成测试)尽早发现问题。

使用配置管理工具来控制不同的设置和配置。实现开发、测试和暂存环境的标准化,确保每个阶段的流程保持一致。

提供可见性,让每个人都能看到部署过程的进展情况。编写有关体系结构、政策和程序的详细文档。

持续地自动执行部署流程中的步骤。专注于部署,准备撤消不成功的(回滚)变更。监控和回滚有助于保持部署流程平稳可靠。

部署自动化:常见问题


我的公司该如何开始部署自动化?

首先,评估贵公司当前的部署流程和工具。确定团队可以自动执行哪些步骤。然后,选择一项重复的手动任务,例如测试。使用开源自动化工具自动执行该流程。反复记录学习成果和进展。

部署自动化是否会影响软件测试?

自动部署允许在生命周期的早期进行更频繁的测试。自动化的单元、集成和回归测试可验证变更并帮助更快地发现问题。测试是自动部署的先决条件。

用于部署自动化的主要工具有哪些?

用于部署自动化的主要工具是配置管理工具、CI/CD 和版本控制系统。

Git 使多个开发人员能够协作并维护版本控制的代码变更历史记录。Jenkins 和 Atlassian 的 Bitbucket Pipelines 是领先的 CI/CD 工具。Jenkins 支持持续集成和交付,以自动执行软件开发阶段。Bitbucket Pipelines 在 Bitbucket 存储库中提供集成的自动化工作流程,可实现高效的测试和部署。

其他关键工具包括:

  • Terraform:支持基础架构即代码,实现一致、可扩展的调配。
  • Docker:容器化应用,可实现跨环境的顺利部署。
  • Ansible:通过人类可读的自动化来简化复杂部署。


分享此文章
下一主题

推荐阅读

将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。

Devops 示意图

DevOps 社区

Devops 示意图

DevOps 学习路径

地图插图

免费试用

注册以获取我们的 DevOps 新闻资讯

Thank you for signing up