欢迎来到我的系列节目与Sitecore Headless相关的DevOps最佳实践实现。在第1部分中,我们将回顾Git DMZ Flow,并了解如何在Azure DevOps中实现这些主体。
什么是Sitecore Headless?
在深入研究技术细节之前,让我们先了解Sitecore Headless是什么。Sitecore Headless架构将后端内容功能与前端功能分离。从DevOps的角度来看,这意味着我们需要管理两个应用程序。后端和前端都有多个选项可供选择。在本系列中,我们将使用传统的Sitecore XM Azure PaaS作为后端,使用Vercel上托管的React和Next.js应用程序作为前端。
什么是Git DMZ流?
如果你还没看过丹尼尔·斯皮沃克的Git DMZ流的详细概述我建议这样做,但以下几点将是我们的关键。
Git DMZ流:
- 有一个主回购与两个关键分支:
主
而且非军事区
主
分支始终是可部署和可分支的- CI服务器是唯一允许向其推送代码的服务器
主
功能
而且错误
分支是从主
和pull-requested into非军事区
- 成功构建
非军事区
将快进主
来头
的非军事区
释放
树枝从主
热修复补丁
树枝可以剪下来释放
解决关键问题
在Azure DevOps中实现Git DMZ流
1)一般存储库设置
正如我前面提到的,我们有两个独立的后端和前端应用程序。我们将两个应用程序托管在同一个存储库中:
的主
而且非军事区
分支是在with的repo上定义的非军事区
设置为默认值。
2)限制对主分支的访问
为了保持主
分支完全锁定除了CI服务器之外的所有人,我们将使用分支安全设置。设置分支安全选举回购>分支然后选择分支旁边的更多选项图标。从上下文菜单中选择Branch策略。您还可以通过转到获得分支安全性项目设置>存储库>[存储库名称]>安全>[分支名称]。
一次你已经打开了分支策略主
分支,将“贡献”权限设置为允许只对项目集合生成服务帐户组,并确保权限设置为否认对于所有其他组。
3)配置dmz分支策略
上启用分支策略非军事区
分支将满足所有变更的要求非军事区
是通过拉请求来实现的。设置分支策略,选中回购>分支然后选择分支旁边的更多选项图标。从上下文菜单中选择Branch策略。一旦定义了分支策略,策略图标将显示在分支名称旁边。您可以选择图标直接转到分支的策略设置。您还可以通过转到获取分支策略项目设置>存储库>[存储库名称]>策略>分支策略> <分支名称>.使用实例
定义的具体策略如下:
- 检查链接的工作项:必需的
- 检查注释解析:必需
- 限制合并类型:压缩
4)快进主对非军事区
在pull请求成功合并成非军事区
,一个完整的分支机构头
将会发生。如果成功了,那么主
分支应自动快进到头
的非军事区
.这个快进是由下面的脚本完成的。
-脚本:| ECHO clean git add。&& git reset——hard ECHO git checkout master——quiet git checkout master——quiet ECHO git merge origin/dmz——ff-only——quiet git merge origin/dmz——ff-only——quiet ECHO git push origin master——quiet git push origin master——quiet displayName:快进master to dmz failOnStderr: true condition: and(eq(variables['Build.]SourceBranch'], 'refs/heads/dmz'), ne(变量['构建。Reason'], 'PullRequest'),而不是(cancelled ()))
在第2部分我们将仔细研究这种快进发生的构建管道,并了解如何验证我们之前的前端应用发送它转到Vercel。