新功能:将私有 Git 存储库与 AEM 云服务结合使用
在 AEM 作为云服务或 Adobe 托管的 AEM 6.5 产品(AEM 托管服务或“AMS”)中, 长期以来一直要求将 任何 代码部署到任何 Adobe 托管环境中,首先需要将该代码放入 Adobe 托管的 git 存储库。
原因很简单 - Adobe 的 Cloud Manager CI/CD 框架必须对代码运行一系列检查,然后从其容器化构建服务对该代码执行构建,然后还能够在生产部署完成后在 repo 中标记发布。
私有存储库与 Adobe Repos 的比较 - 上下文
长期以来,AEMaaCS 和 AMS 客户在使用此功能时必须应对许多复杂性和限制,这使得能够将私有 git repo 与云托管的 AEM 一起使用成为一项非常受欢迎和追捧的功能,例如:
维护两个 Repos
Adobe git repo 只是一个 部署 存储库。它并不是您开发 AEM 站点时使用的主要 git。它没有可用性或备份的 SLA。因此,在运行项目时,您必须维护自己的内部存储库以及用于部署的 Adobe 存储库,然后管理这些存储库之间的同步。
Adobe repo 缺少拉取请求等功能
Adobe git 实现缺少许多功能,这使得某些早期管道有点具有挑战性。例如,Adobe git 没有线程或拉取请求。
当 Adobe CI/CD 管道是唯一可以真正运行全套构建自动化测试的地方时,这就会成为一个问题,这些测试会显示安全违规、性能下降、Sonarqube 规则违规等问题。
因此,如果您有一个新功能并且想要为其打开 PR - 比如说 - 您认为可以使网站速度更快,那么您必须在自己的 Github 上打开该 PR,您的领导必须“批准”它,即使我们不知道它是否通过了构建检查,然后您将其提交给 Adobe git,此时它可能会失败,那么您的 PR 就变得毫无价值了。
安全和用户管理
Adobe git 上没有细粒度的控制来控制用户管理和访问。因此,您最终需要在自己的 git 上实现自己的安全性,然后依靠您在自己端创建的构建自动化来尝试限制通过 Adobe git 的分支、提交、更改等。这是可以做到的,但只是增加了容易出错的 Rube Goldberg 复杂性。
AEM 作为云服务和 AMS 的私有 Git 存储库:Adobe 发布了什么?
需要明确的是,这是该功能的首次正式发布(在今年的Adobe 峰会上宣布,并在过去一年中向各种客户进行了预览)。因此,它不支持您可能需要的每个功能,并且您应该注意一些限制。但对于生活在这个世界上的人们来说,这是向前迈出的一大步,所以我将尝试概述它能做和不能做的一些事情。
您现在可以做什么:
-
在 Cloud Manager Pipelines 中使用 Github.com: 您现在可以在 Adobe Cloud Manager 中添加 github.com git 存储库作为部署存储库。
注意: 这具体指的是公共https://github.com/站点,而不是自托管的 Github 或其他 git 提供商。Adobe 使用 Github App 来验证 Git 并维护访问权限,这是目前流程中必需的部分。这可能是实施其他 git 提供商所面临的主要障碍之一。
-
在 PR 上运行代码质量管道: 管道中此“左移”的一个非常有用的部分是,在 github 中打开 PR,然后启动云管理器代码质量管道,然后可以将其结果直接报告到 PR 中。这对于验证 PR 是否真的可以批准或者是否应该返回重新进行至关重要。
-
PR 管道是自动创建和自动修剪的: 当您在云管理器中打开启动代码质量管道的 PR 时,将专门为该 PR 创建管道,并将专门为该 PR 运行和输出。当该 PR 关闭时,Cloud Manager 将自动删除该管道,这样您就不会被一百万个 PR 管道堵塞。
此行为可以在您的项目中配置。 -
执行全栈管道: 完成代码质量检查并批准 PR 后,就可以设置 Cloud Manager 全栈管道,以便能够 直接 从 Github 存储库运行,而无需传输 Cloud Manager Adobe Repo。
这些部署可以一直进行到生产阶段。 -
适用于 AMS(AEM 6.5)和 AEM 云服务:这支持两种类型的基础设施,但这里有相同的注意事项。
您还不能做的事情:
-
使用其他非 Github Git 存储库: 此功能仅适用于https://github.com 。所以,如果你有“company.github.com”或“gitlab.com”或“bitbucket.com”或 Azure repos 或任何其他非 Github git 提供商,这对您来说还不起作用。
Adobe 表示,他们正在根据客户需求积极地确定优先级并启用其他 git 提供商 - 因此,如果您有需要,请立即联系您认识的任何愿意倾听的 Adobe 员工。 -
无需配置、前端或 Web 层管道: 目前,此功能仅适用于部署 AEM 项目中所有内容的“全栈管道”。如果您使用其他子模块管道(例如 Web-Tier 管道)来部署仅调度程序代码,或使用 Config 管道来部署 CDN 配置,则此功能尚不适合您。
-
Git 触发器尚不起作用: 如果您尝试在 git 触发器上启动管道(代码质量或部署),以便在提交代码后开始部署,但这还不起作用。
此时,即使选中了“部署触发器:在 Git 更改时”,您仍然需要手动触发部署。现在,文档的“限制”部分也提到了这一点。(感谢Sathish Balan指出了这一点!)
完善您的 AEM 管道
如果您想要亲自尝试一下,可以参阅此处的文档,了解如何在 AEM 中开始使用自我管理的 Github 。
但是,如果您不确定这是否是您想要实现的事情,或者有其他部署或 CI/CD 方面的担忧想要讨论,我很乐意与您交谈!
此外,有关该主题的更多信息(如果您喜欢播客),我们的首席技术官 Dwayne Hale 和我在这里讨论了运行云与自托管 AEM 设备的优缺点。

泰德·里夫斯
Arbory Digital 首席架构师
AEM 架构师和 DevOps 人员,拥有 14 年 AEM/CQ 经验和 25 年以上系统基础设施经验。他骑山地自行车的时间比从事系统管理的时间还长,虽然他来自缅因州,但他的家却在乔治亚州西北部的山区。
喜欢你听到的吗?对于什么适合您有疑问吗?我们很乐意与您沟通!联系我们
播客节目和博客文章

什么是 AEM?Adobe Experience Manager 用于什么?我们尝试在 30 分钟或更短的时间内对 AEM 是什么以及它的作用做一个基本的解释 - 尽管消防部门在播客录制大约 19 分钟后随机出现,但我们还是设法做到了!

您对可用于优化网站在中国大陆的性能的工具了解多少?即使您没有中文网站,您是否需要担心中国境内的表现?你做!

在当今云遣返和极快的新边缘交付服务之间的战争中,让我们重新审视:自托管 AEM 仍然存在吗?