Рейтинг:0

Как бороться с изменениями конфигурации в prod и несколькими разработчиками?

флаг cn

У меня есть два сценария управления конфигурацией, с которыми я не знаю, как поступить:

  1. Пользователь-гик вносит изменения в конфигурацию в продакшене. Как лучше всего импортировать эти изменения в dev, не уничтожая работу, над которой в dev ведется работа? git тянуть и драш цим переопределит все, над чем вы работаете в dev. я знаю, что есть drush cim --partial, но насколько я понимаю, это не рекомендуемый способ сделать это (Источник). Я также мог бы использовать модуль конфигурации только для чтения в prod, чтобы вообще избежать изменений конфигурации, но есть несколько примеров, когда пользователю действительно должно быть разрешено изменять конфигурацию.

  2. Два разработчика работают в своих локальных средах разработки: как я могу убедиться, что один из них не переопределяет работу другого при переходе на этап или рабочую среду, особенно когда в рабочей среде также происходят изменения конфигурации (см. 1)? Вероятно, может помочь какой-то способ ветвления git, но мне не помешала бы дополнительная помощь в том, как именно его использовать.

Рейтинг:4
флаг us

Правильное использование ветвления git определенно может помочь в этом. Ключевым моментом является то, что каждая отдельная ветка имеет стабильную основу конфигурации: ничто внешнее по отношению к ветке не должно изменять состояние конфигурации внутри ветки, чтобы позже, когда придет время экспортировать конфигурацию в ветке и объединить ее в продакшн, остались только актуальные изменения. на ветку записываются.

Один из способов сделать это — создать основную ветку с именем производство, и HEAD этой ветки всегда отслеживает текущее состояние вашей кодовой базы. Вы все соглашаетесь не совершать и не объединять вещи в производство если только вы не готовитесь выпустить эти вещи вживую.

Когда Арджун хочет поработать над новой функцией, они создают новую ветку производство, и они называют это арджун-1.

На следующий день Бет нужно исправить ошибку, поэтому она создает собственную новую ветку. производство называется Бет-1.

Между тем, контент-менеджер Сеси в пользовательском интерфейсе сайта создает веб-формы, а это значит, что она вносит живые изменения в конфигурацию, которые отличаются от состояния конфигурации производство. В каком-то смысле она тоже является ответвлением производство! На самом деле, давайте продолжим и создадим ceci-1 ответвление от производство теперь, чтобы представить это, хотя мы, вероятно, еще ничего не будем коммитить.

Несколько дней спустя соответствующие ветки Арджуна и Бет были проверены и приняты, и руководство хочет развернуть новую версию своей работы на работающем сайте.

Первое, что нужно сделать, это проверить ceci-1 ветке, экспортируйте текущую конфигурацию и зафиксируйте обновленные файлы конфигурации в ceci-1.

Теперь вы можете приступить к объединению в производство: новая функция арджун-1, исправление Бет-1, а также оперативные обновления конфигурации ceci-1. Могут возникнуть конфликты слияния, которые необходимо просмотреть, но вам не нужно беспокоиться о том, что вы случайно перезапишете чужую конфигурацию. Это связано с тем, что каждая отдельная ветвь имела согласованную основу для экспорта своих индивидуальных изменений конфигурации.

Допустим, вы не сделали ceci-1 ветвь. Вместо этого вы объединили арджун-1 и Бет-1 в производство, затем экспортировал оперативную конфигурацию и зафиксировал оперативные обновления в производство. Вы облажались! Вы изменили основу для изменений конфигурации живого сайта Ceci. Они были основаны на состоянии производства без ветвей Арджуна и Бет. При экспорте сейчас все внесенные изменения конфигурации будут перезаписаны.

Extect avatar
флаг cn
Большое спасибо за подробный ответ!!!
Рейтинг:0
флаг de

Никогда не следует вносить изменения в производство. Изменения рабочей конфигурации должны вноситься разработчиками локально. Конфликты слияния должны сортироваться на их локальной машине. Итак, это будет выглядеть так:

  1. Разработчик проверяет код
  2. Разработчик вносит изменения экспортирует конфигурацию
  3. Разработчик пытается подтолкнуть, но ему отказывают в новых коммитах
  4. Разработчик тянет, видит изменения в конфигурации
  5. Разработчик импортирует новую конфигурацию, чтобы убедиться, что она импортируется правильно и что изменения в его коммите не нарушены.
  6. Разработчик экспортирует конфигурацию после внесения любых исправлений, коммитов и отправок на сервер.

Следует ожидать, что любые изменения в конфигурации, сделанные непосредственно на удаленных серверах, будут перезаписываться при каждом нажатии. Это решает ваши вышеуказанные проблемы, за исключением, возможно,:

есть несколько примеров, когда пользователю действительно должно быть разрешено изменить конфиг.

Такие как?

Les Lim avatar
флаг us
Например: добавление или настройка веб-форм, перестановка блоков, добавление ролей пользователей, настройка рабочих процессов, изменение изображений по умолчанию в полях изображений и т. д. Конечно, здорово, если все это может происходить в контролируемой среде разработки, но на большинстве сайтов Drupal нет команда разработчиков, которая может контролировать все эти изменения в процессе развертывания.
Extect avatar
флаг cn
Спасибо, @Лес Лим! Это именно те варианты использования, которые я имею в виду. Некоторым проектам требуется больше гибкости, или проект настолько мал, что нет постоянной команды разработчиков, которая могла бы вносить изменения в контролируемой среде разработки. В обоих случаях в prod вносится больше изменений, и это именно та проблема, из-за которой я не понимаю, как будет выглядеть лучший рабочий процесс (если он есть).
Jaypan avatar
флаг de
Я лично не согласен с клиентами, что изменения конфигурации, такие как выше, связаны с созданием сайта, а не с управлением контентом. Я не вижу ситуаций, когда клиенты должны добавлять роли пользователей, изменять рабочие процессы и изменять изображения по умолчанию в полях. Мы создаем сайты для клиентов, открытие сайтов для клиентов открывает проблемы - такие как эта!
Jaypan avatar
флаг de
Я должен добавить, что компоновщик макетов может быть использован для решения проблемы с блоками. Веб-форма — самая большая проблема, которую я вижу для вас. Я не использую его, хотя, поскольку это только открывает проблемы в моем опыте. Исключением, где я хотел бы его использовать, было бы то, что требованием проекта является возможность клиента создавать свои собственные формы.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.