Настройка рабочего процесса с помощью Netlify CMS

У меня есть сайт Gatsby на 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. Это означает, что контент, полученный в пользовательском интерфейсе администратора, будет соответствовать контенту в репозитории, который может отличаться от вашего локального сайта. Это также означает, что контент, сохраненный с использованием пользовательского интерфейса администратора, будет сохраняться непосредственно в размещенном репозитории, даже если пользовательский интерфейс используется локально или в промежуточном режиме.

Из конфигурации проекта (config.yml), используемого Netlify CMS:

backend:
  name: git-gateway
  branch: production

Итак, на данный момент я могу вносить изменения в структуру сайта и делать их доступными только на стадии подготовки, однако нет механизма, позволяющего вносить изменения содержимого и делать их доступными только локально или только на стадии подготовки.

Один из вариантов, который я вижу, - это развернуть другой config.yml файл для каждого развертывания (и использовать отдельный файл локально), поэтому при локальном использовании CMS я бы установил ветку на dev, а при постановке и производстве я бы установил ветку на staging и production соответственно. Если предположить, что контент, редактируемый Netlify-CMS, изолирован, это должно упростить продвижение изменений контента с staging на production.

Это лучший подход?


person Undistraction    schedule 07.09.2018    source источник


Ответы (1)


Похоже, что в настоящее время, если вы не используете Github, который поддерживает Редакционный процесс, вы сами.

Netlify очень легко настроить для развертывания нескольких веток одного проекта, поэтому вы можете легко получить три отдельные среды. В следующем обсуждении я буду использовать Gatsby, но я думаю, что эта проблема применима к любому статическому конструктору сайтов, который вы используете.

  • dev при локальном запуске на localhost
  • staging Промежуточная ветвь добавлена ​​в Netlify как дополнительная ветвь развертывания.
  • production Производственная ветвь добавлена ​​в Netlify как производственная ветвь.

Если бы мы не использовали Netlify CMS, это было бы все, что нам нужно. Мы могли бы развиваться локально и продвигаться к этапу, когда мы хотели сделать изменения доступными, а затем продвигать, объединяя этап в производство и отправляя его в производственное подразделение, когда эти изменения будут готовы.

Однако из коробки все эти среды будут использовать один и тот же config.yml, что означает, что все три будут загружаться и вносить изменения в одну и ту же ветвь - какую бы ветку вы не определили как значение для branch.

Что необходимо, так это способ изолировать изменения содержимого в каждой среде, чтобы изменения, внесенные в процессе разработки, вносились в ветвь dev, изменения, сделанные на стадии разработки, вносились в ветвь staging, а изменения, внесенные в процессе разработки, вносились в ветвь production.

Этого можно достичь, развернув config.yml зависящую от среды среду в каждой удаленной среде и выбрав по умолчанию ветвь dev в разработке. Вероятно, самый простой способ сделать это - использовать шаг перед сборкой, чтобы заполнить поле branch ваш config.yml именем текущей ветки.

На мой взгляд, это довольно неудовлетворительное решение, и оно настолько распространено, что оно должно быть покрыто Netlify CMS из коробки. Я открыл проблему здесь.

person Undistraction    schedule 10.09.2018