使用阿里云工具搭建多云 CI/CD 链





0/5 (0投票)
在本文中,我将概述您可能希望使用商业 CI/CD 平台的原因,然后介绍如何利用阿里云上的工具来搭建生产就绪的 CI/CD 流水线。
阿里云提供全面的全球云计算服务,助力您的业务发展。 立即创建账户,即享 300 美元新用户免费抵扣券。
如今,对于任何软件开发来说,拥有一个持续集成和持续交付 (CI/CD) 流水线几乎是必不可少的。因此,问题不在于您是否应该搭建 CI/CD 流水线,而在于如何搭建。
在 CI/CD 的“如何”方面,您有很多选择。市场上存在无数的 CI/CD 解决方案,包括商业平台和开源平台,它们各自都有独特的优势和劣势。
在本文中,我将概述您可能希望使用商业 CI/CD 平台的原因,然后介绍如何利用阿里云上的工具来搭建生产就绪的 CI/CD 流水线。
商业平台 vs 开源平台
商业 CI/CD 平台通常是一种托管服务,负责处理标准流水线中的构建和部署步骤。虽然商业平台可能会引起隐私方面的担忧,并且成本通常高于自托管解决方案,但它们是利用最少资源建立 CI/CD 流水线的绝佳方式。除了托管服务,还有本地部署的商业 CI/CD 解决方案,可以帮助解决托管服务存在的隐私和安全问题。
许多商业 CI/CD 平台通过开源其 CI/CD 引擎来回馈开发者社区。虽然并非所有商业平台都开源其引擎,也并非所有开源引擎都有商业平台支持,但这些解决方案提供了更多的控制权,但牺牲了易用性。启动一个开源 CI/CD 平台需要更多的工作,并且需要某种服务器来运行。对于需要更多资源进行构建过程的组织,或者仅仅是希望尽可能将代码保留在内部的组织来说,开源平台是一个极佳的选择。
阿里云 + CI/CD
在阿里云上托管应用程序时,两种 CI/CD 解决方案都可行——具体取决于应用程序的需求和用例。为了进行演示,让我们来看一下如何使用商业或开源 CI/CD 平台来执行远程命令和部署一个简单的应用程序。虽然开源和商业解决方案的配置不同,但实际实现 CI/CD 流水线的过程在各个平台之间几乎是相似的,并且与服务器(无论是私有云还是公有云)交互归结为两个命令:rsync 和 ssh。
部署简述
在我们开始之前,假设我们的 CI/CD 流水线仅包含三个部分:测试 -> 构建 -> 部署。虽然测试和构建过程可以直接在平台内完成,但部署构建意味着我们需要发挥创意来解决部署方法。一些云服务提供商提供 API,可以使此解决方案感觉更流畅,但在高层次上,以下方法适用于任何 VPS。幸运的是,我们可以使用标准的 shell 命令将任何构建的代码部署到运行的 ECS 实例上。
rsync -r --delete-after --quiet /path/to/build <ssh-user>@<ecs-host>:path/to/files
rsync 是一个命令行实用程序,用于在服务器之间同步文件。它已经存在很长时间了——rsync 算法因被 Dropbox 用于文件同步而闻名。这种部署方法的优点在于,无论您使用哪个托管提供商,都可以使用它,这意味着您可以同时部署到多个云提供商,包括阿里云内部和外部。
需要注意的是,为了成功认证到我们的 ECS 实例,您需要生成一个 SSH 密钥,并授予您的 CI/CD 平台访问权限。虽然这超出了本文的范围,但 Digital Ocean 有一个出色的指南来生成 SSH 密钥。(请注意:如果您遵循 Digital Ocean 的指南,则不应设置 SSH 密码短语——否则您的自动化部署过程将无法使用您的密钥。)
执行命令
现在,假设我们需要在 CI/CD 流水线中执行一个新命令。例如,假设部署后我们需要在 ApsaraDB 上运行数据库迁移,将我们的流水线更新为测试 -> 构建 -> 部署 -> 迁移。与上面的部署命令一样,可以通过简单的 SSH 命令来实现。
ssh <ssh-user>@<ecs-host> -C "<migration-command>"
SSH 命令的 -C 选项将在您创建的登录 shell 中执行任何命令。利用这一原理,我们可以完成比运行简单的数据库迁移更多的工作。这使我们能够与各种阿里云服务进行交互,例如清除存储在 ApsaraDB for Redis 中的缓存,而该缓存只能从阿里云内网访问。
后续步骤
虽然上述命令足以在基本级别上部署和交互任何 VPS,但使用阿里云 API 构建更健壮的流水线将为您提供更强大的控制力。它将使您能够以更编程化的方式与资源交互,管理您的负载均衡器,自动配置暂存服务器等。此解决方案涉及更多内容,但将为您提供与在其他完全集成的 CI/CD 托管平台中找到的相同的控制级别。归根结底,构建一个合适的 CI/CD 流水线在于规划和自动化,而不是您使用的具体工具。给定正确的命令,无论您使用什么平台,一切皆有可能。