我在Gitlab上有一个Gatsby站点,该站点已部署到Netlify并使用Netlify-CMS。 Netlify可以将站点推送到不同的分支,并将每个部署到单独的URL。例如,我当前的站点有一个部署到production
的{{1}}分支和一个部署到example.netlify.com
的登台分支。
但是,使用Netlify CMS更新内容时创建的提交是另一回事。看来(至少是开箱即用),无论检出哪个分支或站点位于何处,Netlify CMS始终会将更改推送到其配置中定义的生产分支中。
来自docs。
注意:无论您在哪里访问Netlify CMS,是否都在运行 在本地,暂存环境中或在您已发布的网站中- 始终获取并提交托管存储库中的文件(例如, 在GitHub上),在您的Netlify CMS中配置的分支上 config.yml文件。这意味着在管理界面中获取的内容将 匹配存储库中的内容,这可能与您的内容不同 本地运行的网站。这也意味着使用管理员保存的内容 即使您正在运行,UI也将直接保存到托管存储库 本地或临时用户界面。
从Netlify CMS使用的项目配置(staging--example.netlify.com
):
config.yml
因此,目前,我可以对网站的结构进行更改并使它们仅在登台时可用,但是没有机制可以对 content 进行更改并使它们仅在本地或仅在分期。
我可以看到的一个选择是为每个部署部署一个不同的backend:
name: git-gateway
branch: production
文件(并在本地使用一个单独的文件),因此在本地使用CMS时,我会将分支设置为config.yml
,在登台和生产时,我分别将分支设置为dev
和staging
。假设由Netlify-CMS编辑的内容的位置是隔离的,则应该可以轻松地促进内容从production
到staging
的变化。
这是最好的方法吗?
答案 0 :(得分:2)
目前看来,如果您不使用支持Editorial Workflow的Github,那您就一个人了。
设置Netlify来部署同一项目的多个分支非常容易,因此您可以轻松地轻松拥有三个独立的环境。在下面的讨论中,我将使用Gatsby,但我认为此问题适用于您使用的任何静态网站构建器。
如果我们不使用Netlify CMS,这将是我们所需要的。我们可以在本地进行开发,并在需要进行更改时将其推送到阶段,然后通过将阶段合并到生产中并在这些更改准备就绪时推送到生产分支来进行推广。
但是,所有开箱即用的环境都将使用相同的config.yml
,这意味着这三个环境都将从同一分支加载并对其进行更改-您定义为{{1}的值的任何分支}。
所需要的是一种隔离对每个环境的内容更改的方法,以便在开发中对branch
分支进行更改,对暂存进行的更改对dev
分支进行更改生产的产品将制作到staging
分支。
这可以通过在每个远程环境中部署特定于环境的production
并在开发中默认使用config.yml
分支来实现。可能最简单的方法是使用预构建步骤,用当前分支的名称填充dev
的{{1}}字段。
在我看来,这是一个非常不令人满意的解决方案,并且是一个非常普遍的用例,它应该由Netlify CMS开箱即用。我打开了一个问题here。