我有一个盖茨比网站上的Gitlab部署到Netlify和使用Netlify-CMS。Netlify可以将站点推送到不同的分支,并将每个分支部署到一个单独的url中。例如,我的当前站点有一个production分支部署到example.netlify.com,一个临时分支部署到staging--example.netlify.com。
但是,使用Netlify CMS更新内容时创建的提交是另一回事。看来(至少是开箱即用),Netlify CMS将始终将更改推送到其配置中定义的生产分支,无论哪个分支已签出或站点位于何处:
来自文档。
注意:无论您在哪里访问Netlify CMS --无论是在本地运行、在暂存环境中运行还是在已发布的站点中运行--它都将始终在托管存储库(例如,在GitHub上)中获取和提交文件,以及在Netlify CMS config.yml文件中配置的分支上。这意味着管理UI中获取的内容将与存储库中的内容相匹配,这可能与本地运行的站点不同。这也意味着使用admin UI保存的内容将直接保存到托管存储库中,即使您是在本地运行UI或在暂存中运行。
来自Netlify CMS使用的项目配置(config.yml):
backend:
name: git-gateway
branch: production因此,目前我可以对站点的结构进行更改,并且只在暂存时才能使用,但是没有机制可以对内容进行更改,并且只在本地或只在暂存时才能使用。
我可以看到的一个选项是为每个部署部署一个不同的config.yml文件(并在本地使用一个单独的文件),因此当在本地使用CMS时,我会将分支设置为dev,在分阶段和生产时分别将分支设置为staging和production。假设Netlify-CMS编辑的内容的位置是孤立的,这将使从staging到production的内容更改变得容易。
这是最好的办法吗?
发布于 2018-09-10 09:46:35
现在看来,如果您不使用支持编辑工作流的Github,那么您就只能靠自己了。
将Netlify设置为部署同一项目的多个分支是非常容易的,因此您可以轻松地拥有三个独立的环境。在下面的讨论中,我将使用Gatsby,但我认为这个问题适用于您正在使用的任何静态站点生成器。
如果我们不使用Netlify CMS,这将是我们所需要的。我们可以在本地开发,当我们想要使更改可用时,我们可以推动阶段,然后通过合并到生产阶段并在这些更改准备好时推进到生产阶段。
但是,所有这些环境都将使用相同的config.yml,这意味着这三个环境都将从同一个分支加载并对其进行更改--无论您定义哪个分支为branch的值。
需要的是一种隔离每个环境的内容更改的方法,以便对dev分支进行开发中的更改,对staging分支进行阶段性更改,并对production分支进行生产上的更改。
这可以通过将特定于环境的config.yml部署到每个远程环境,并默认为开发中的dev分支来实现。可能最简单的方法是使用预构建步骤填充branch字段( config.yml ),其中包含当前分支的名称。
这是一个相当不令人满意的解决方案,在我看来,是如此普遍的使用,它应该由Netlify CMS开箱即用。我开了一期这里。
https://stackoverflow.com/questions/52224491
复制相似问题