加速:高效能软件交付之道_【德】迈克尔·考夫曼_AZW3_MOBI_EPUB_PDF_电子书(无页码)_【德】迈克尔·考夫曼

内容节选

Chapter 9第9章部署到任何平台 前面的章节学习了如何使用GitHub Actions作为自动化引擎和GitHub Packages来轻松共享代码和容器,开发者可以通过自动化部署来完成持续集成/持续交付(CI/CD)的功能。 本章将展示如何以安全合规的方式轻松部署到任何云或平台。 本章包括如下主题: ●分阶段部署 ●自动化部署 ●如何部署到Azure App Service ●如何部署到AWS ECS ●如何部署到GKE ●基础设施即代码 ●衡量成功 CI/CDCI 意味着每次把代码修改推送到存储库时,代码都会被构建和测试,输出打包成一个构建工件。在CD中,每当创建一个新的构建工件时,会自动将该工件部署到指定环境中。 当执行CI/CD时,开发和交付阶段是完全自动化的,代码随时准备好部署到生产环境。 存在多种区分持续交付和持续部署(都属于CD)的定义,但是这些定义在文献中不一致,对该主题的价值几乎没有贡献。 分阶段部署 阶段或层是部署和执行软件的环境。典型的阶段包括开发、测试、暂存(或预生产)和生产。通常,暂存(或预生产)阶段是生产环境的完全镜像,有时它用于通过使用负载均衡切换两个环境的零停机部署,而接近生产的阶段需要手动批准才能部署。 如果一个企业使用功能标志(请参考第10章)和CD,则阶段的数量会减少。我们可以不谈阶段,而谈基于环形的部署或扩展单元。基于环形的部署的想法是,客户在不同的生产环,所以把更新部署到一个环中,并自动监控系统以查找意外的异常或不寻常的指标,如CPU或内存使用情况。此外,可以在生产环境中运行自动化测试。如果没有错误,发布过程是连续的,并部署到下一个环。在讨论基于环的部署时,通常意味着不涉及手动批准。但是,环间可以存在手动批准。 在GitHub中可以使用环境来进行阶段性部署和基于环的部署,用户可以在存储库的“Settings|Environments”下查看、配置或创建新的环境。 对于每个环境,可以定义以下内容: ●必要的审批者:这些包括最多5个用户或团队作为手动审批者,在执行部署前需要其中的一个审批者批准。 ●等待计时器:这是指部署在执行前等待的宽限期。最大的时间是43200分钟或30天。此外,如果在前一个阶段发现了任何错误,则可以使用API来取消部署。 ●部署分支:这里可以限制要部署到环境的分支,可选择所有受保护的分支或自定义模式,模式可以包含通配符(如release/*)。 ●环境密钥:环境中的密钥会覆盖存储库或组织范围内的密钥,只能在指定的审批者批准部署后加载密钥。 配置如图9-1所示。 图9-1 在GitHub中配置一个环境 在工作流文件中,可以在工作层面指定环境: 也可以指定一个URL,然后显示在概览页面上: 通过needs关键字可以定义作业之间的依赖关系,也可以定义环境之间的依赖关系(见图9-2)。 图9-2 阶段性部署的概览页面 环境的状态会显示在存储库主页上(见图9-3)。 如果读者想尝试相关操作,可以在https://github.com/wulfland/AccelerateDevOps/的分支中运行Staged Deployment工作流,并将自己添加为某些阶段的必要审批者。 图9-3 主页上的环境 自动化部署 当询问客户是否已经自动化了他们的部署时,通常得到的回答是肯定的。然而,自动化只意味着有一个脚本,或者有一个安装程序的文件,这只是部分自动化。只要有人登录到服务器创建账户或DNS记录,或手动配置防火墙,部署就不是自动的! 人类会犯错误,但机器不会!请确保自动化部署的所有步骤,而不仅仅是最后一步。由于GitHub Actions是完美的自动化引擎,因此让工作流执行所有自动化部署是一种好的做法。 如何部署到Azure App Service 为了让读者开始使用GitHub Actions的自动部署,本书创建了三个动手实践: ●部署到Azure App Service ●部署到AWS ECS ●部署到GKE 所有动手实践都假设读者在指定的云中设置了一个账户。如果读者有单一云策略,则可以直接跳到相关的实践步骤。 动手实践的步骤说明位于GitHub中(https://github.com/wulfland/AccelerateDevOps/blob/main/ch9_release/Deploy_to_Azure_App_Service.md)。建议读者按照网站的步骤进行,因为其提供的链接方便复制粘贴。本书将以逐步指导的方式讲解,重点是如何部署应用程序。 部署Azure资源 Azure资源的部署是在setup-azure.sh脚本中进行的。它创建了一个资源组、一个应用服务计划和一个应用服务。读者可以在工作流中轻松地执行这个脚本。部署完成后,从Web应用程序获取publish配置文......

  1. 信息
  2. 译者序
  3. 推荐序一
  4. 推荐序二
  5. 前言
  6. 作者简介
  7. 审校者简介
  8. 第一部分 精益管理与协作
  9. 第1章 重要的指标
  10. 第2章 计划、跟踪和可视化工作
  11. 第3章 团队合作与协作开发
  12. 第4章 异步工作:无处不在的协作
  13. 第5章 开源和内部开源对软件交付性能的影响
  14. 第二部分 工程DevOps实践
  15. 第6章 使用GitHub Actions实现自动化
  16. 第7章 运行工作流
  17. 第8章 使用GitHub Packages管理依赖
  18. 第9章 部署到任何平台
  19. 第10章 功能标记和功能生命周期
  20. 第11章 主干开发
  21. 第三部分 自信发布
  22. 第12章 使用左移测试来提高质量
  23. 第13章 左移安全和DevSecOps
  24. 第14章 代码保护
  25. 第15章 保护部署
  26. 第四部分 软件架构
  27. 第16章 松散耦合架构和微服务
  28. 第17章 团队赋权
  29. 第五部分 精益产品管理
  30. 第18章 精益产品开发与精益创业
  31. 第19章 实验与A/B测试
  32. 第六部分 GitHub企业版
  33. 第20章 GitHub:开发者的家园
  34. 第21章 迁移到GitHub
  35. 第22章 组织团队
  36. 第23章 企业转型