你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
DevOps 工具链
DevOps 工具链是一组工具,使 DevOps 团队能够在整个产品生命周期中进行协作并解决关键的 DevOps 基础问题。
DevOps 工具链包含的工具作为集成单元运行,用于规划、持续集成、持续交付、运营、协作和反馈。 可以在定义 DevOps 技术生态系统中查看一些不同 DevOps 阶段的 DevOps 技术示例。
DevOps 工具链注意事项
选择一个工具链时,组织中可能已在使用 DevOps 的流程。 应适当地平衡适合团队需求的技术的采用以及标准化的目标,并避免组织中存在参差不齐的 DevOps 生态系统。
可以采用不同类型的 DevOps 工具链:
- 一体化:提供可能无法与其他第三方工具集成的完整解决方案。 对于要开始使用 DevOps 的组织,一体化工具链会很有帮助。 示例: 完整堆栈 Azure DevOps 工具链。
- 自定义:允许团队将已了解和已在使用的现有工具引入和混合到更广泛的 DevOps 工具链中。 集成对于这些类型的工具链至关重要,可避免花费不必要的时间在屏幕之间切换、登录到多个位置以及应对在不同工具间共享信息的难题。 示例:Azure DevOps 和 GitHub 工具链。
考虑使用定期更新的工具链,并在需要时通过电子邮件或在线门户获得帮助。 这是任何处于市场关键路径的产品或服务的要求。
规划
- 请考虑采用支持 持续规划 做法的工具:
- 版本规划
- 长篇故事和特性识别
- 优先级
- 估计
- 用户情景定义
- 积压工作 (backlog) 优化
- 冲刺 (sprint) 规划
- 每日 Scrum
- 冲刺(sprint) 评审
- 追溯
持续集成和持续交付
- 实现持续集成(CI)/持续交付(CD)时,请考虑采用支持以下工具:
- 你选择的存储库也受数据主权/驻留要求的影响。 如果需要将数据托管在美国以外的国家/地区本地,则无法使用 GitHub Repos 时需要 Azure DevOps 存储库。
- 为最大限度地减少预配资源所需的手动配置量,请考虑采用基础结构即代码 (IaC)。 IaC 使你能够应用测试和版本控制等软件工程做法,从而使基础结构和部署自动化、一致且可重复。 像维护的其他代码一样,在源代码管理下保留脚本和模板。
- 采用代码扫描工具来帮助尽快发现代码缺陷。 包括部署前检查,以在任何部署(例如:“what-if”)功能之前验证和确认更改。
- CI/CD 工具可加快产品上市速度。 使用的工具可以并行化任务,并利用云托管基础结构上的弹性可伸缩性来提高 CI/CD 进程的性能。
- 考虑使用可衡量 DevOps 性能的 CI/CD 工具功能。 仪表板和报表可以跟踪开发过程的各个方面,例如提前期、周期时间、工作速度等。
持续运维
持续运营是一个重点,可帮助组织通过持续交付关键服务或功能,在内部系统和客户之间保持输出的连续性。 持续运营的目标是:
- 减少或消除对计划内停机或中断(例如计划性维护、容量优化和部署)的需求。
- 在三个方面提高系统的整体可靠性和复原能力:人员、流程和工具。
使用云原生工具可以:
- 监视服务性能和可用性的关键指标。
- 获得数字体验和客户见解。
- 针对事件、系统恢复或缩放生成智能驱动的响应。
- Azure 诊断和 Application Insights 是跟踪 Azure 资源运行状况和状态的标准方法。 Azure Monitor 还针对云或混合解决方案提供集中式监视和管理。
- 自动执行主动维护和部署或系统更新等任务。
- Azure 自动化是一种云原生工具,可用于创建基于事件的自动化来诊断和解决问题。
协作和反馈
快速反馈循环是 CI/CD 流程的核心。 CI/CD 工具使用反馈来解决 CI/CD 工作流逻辑中的条件,并通过仪表板向用户显示信息。
支持电子邮件通知并与 IDE 或通信平台集成,确保无需检查仪表板即可随时了解正在发生的事情。 确保可以灵活地配置收到的警报,因为收到过多的警报会让它们变成背景噪音。
为协作选择的任何工具都应支持以下协作做法:
- 看板协作
- Wiki 内容协作
- ChatOps 协作
- 团队聊天室
针对 Azure 登陆区域的 DevOps 工具链建议
用于 Azure 登陆区域实现的 DevOps 工具链应考虑之前讨论的所有 DevOps 阶段:
- 规划
- CI/CD(包括基础结构即代码等自动化功能)
- Operations
- 协作和反馈
在选择登陆区域采用中查看登陆区域部署指南以及关于选择实现选项的注意事项。
无论选择何种方法(从小规模开始扩展或企业规模),企业在设计 DevOps 工作流和工具链时往往都遵循一些常见的拓扑结构。
- 完整堆栈 Azure DevOps 工具链:对于已经在 Microsoft 生态系统中投入巨资的企业,此拓扑允许其充分利用 Microsoft 产品和服务之间的原生集成并简化关键流程。
- Azure DevOps 和 GitHub 工具链:此拓扑允许将 Azure 和 GitHub 双方的优势都加入集成完善的解决方案。
完整堆栈 Azure DevOps 工具链
DevOps 阶段 | 工具 |
---|---|
规划 | Azure Boards 为开发人员和其他角色提供强大而灵活的规划功能,包括分层积压工作 (backlog)、可自定义的看板、丰富的流程自定义、团队仪表板和自定义报表。 |
CI/ CD | Azure Repos 允许创建专用 Git 存储库,它支持不同的 Git 客户端、分支策略和保护。 Azure Repos 还提供云中的本地化数据驻留,以符合欧洲法规。 Azure Pipelines 允许客户设置自动化管道以用于 CI/CD(包括用于高级测试报告),并为多阶段管道提供强大的支持。 Azure Pipelines 中精细的权限、入口、自定义检查和自动测试结果报告可帮助在组织中强制实施安全性、合规性和安全部署最佳做法,并支持并行步骤执行和可伸缩性。 Azure Artifacts 提供用于存储包的源,并出于安全目的审查和验证每个包,还提供精细的权限控制和审核。 Azure DevOps 中的 Azure Test Plans 提供了基于浏览器的测试管理解决方案,可用于探索性测试、手动测试和用户验收测试。 Azure Test Plans 的用户通常还使用 Azure Boards 进行规划和项目管理。 可以将用户故事和其他要求链接到测试用例,并记录通过测试发现的 bug。 采用 DevOps 市场扩展,通过凭据扫描程序、开源扫描程序、Bug 和漏洞扫描程序等工具改进静态代码分析。 |
Operations | Azure 仪表板和报表提供自定义报表来帮助监视关键服务性能指标。 Azure 诊断和 Application Insights 是跟踪 Azure 资源运行状况和状态的标准方法。 Azure Monitor 提供集中监视和管理。 Azure 自动化可用于创建基于事件的自动化来诊断和解决问题。 Defender for Cloud DevOps 使用中央控制台,使安全团队能够跨多管道环境(包括 Azure DevOps 和 GitHub)保护应用程序和资源从代码到云。 |
协作和反馈 | Azure DevOps Wiki 允许与其他团队的成员共享信息,并支持对其内容和结构的协作编辑。 Azure Boards 为积压工作项中的评论和讨论提供看板协作和支持。 可以将 Microsoft Teams 与 Azure DevOps 集成,以获得完整的团队协作体验。 |
Azure DevOps 和 GitHub 工具链
DevOps 阶段 | 工具 |
---|---|
规划 | Azure Boards 为规划、存储库管理、数据可视化和分层工作项组织提供稳定且可缩放的解决方案。 该解决方案可与 GitHub 集成,因此可以链接工作项和 GitHub 提交。 使用该解决方案,还可以选择理想的工作流,无论是简单的现成工作流,还是使用强大而灵活的 Azure Boards 自定义引擎生成的自定义工作流。 需要可视化数据时,Azure Boards 有助于轻松生成和配置自定义仪表板并监视整个项目生命周期的进度。 |
CI/ CD | 使用 GitHub 的 GitHub Enterprise(GHE)版本,其中包括 GitHub 存储库、 GitHub 高级安全性(GHAS)和 Azure DevOps 的 GitHub 高级安全性。 GHAS 包括 CodeQL、代码扫描、机密扫描和依赖项评审。 GHE 还提供 Codespaces,这是一种可用于开发代码的云 IDE(能替代 Visual Studio Code),组织通常将其包含在完整堆栈 Azure DevOps 方案中。 如果存储库位于 GitHub 中,可以使用 GitHub Actions 来自动化非生成工作流。 如果情况更为复杂,需要从 GitHub 外部访问代码,或者需要集中管理工作流模板和生成管道,请采用 Azure Pipelines。 对于 Azure Boards,可以将 Azure Pipelines 与 GitHub 存储库集成。 要了解如何集成 Azure DevOps 和 GitHub,请参阅使用 Azure DevOps 和 GitHub。 GitHub Packages 是一种软件包服务,允许以私有方式或公开方式托管软件包。 GitHub 为托管 Docker 或 OCI 映像提供容器注册表支持。 需要访问令牌才能发布、安装或删除包并确保包生命周期管理的安全。 要自动化包,可以将 GitHub Packages 与 GitHub Actions、GitHub API 和 webhook 集成,以创建将代码、CI 和部署包含在一个界面中的 DevOps 工作流。 |
Operations | GitHub Insights 根据 GitHub Enterprise Server 实例中的数据提供分析报告,以帮助了解和改进软件交付流程。 对于登陆区域诊断和管理,请使用完整堆栈 Azure DevOps 方案中建议的 Azure 服务。 |
协作和反馈 | 可通过 GitHub 讨论分享问题、想法、对话、评论请求 (RFC)、资源规划和公告。 使用 Azure Boards 轻松生成和配置自定义仪表板并监视整个项目生命周期的进度。 采用 Microsoft Teams 以获得完整的团队协作体验。 |