Помогите разобраться с деплоем

Главные вкладки

Аватар пользователя Никки Никки 9 апреля в 12:51

Есть локальная разработка и есть рабочий сервер. Использую git и gitlab. В .gitignore включено всё, что не должно быть на проде. В частности

/web/sites/*/settings.local.php
/web/sites/*/
files/
/web/sites/*/services.yml

Теперь понадобилось сделать полную копию именно локальной разработки на другом компе, чтобы все эти файлы там были. Иногда бывает нужно поработать с разных компов. Хотелось бы чтобы в репозитории gitlab всё это хранилось, но оно туда не попадает из-за .gitignore. Как в таких случаях вообще действуют? Может всё просто.... но я в git новичок.

Комментарии

Аватар пользователя Никки Никки 10 апреля в 11:10

на еще один. То есть, локальная разработка может вестись с двух компов. И на каждом надо иметь возможность получить актуальные данные из репозитория. И запушить после работы туда актуальные данные. И при этом нужна возможность пулить данные на рабочий сервер с любого компа (без файлов, которые исключительно для local).
а заливать вручную надо в ту же ветку?

Аватар пользователя pselfin pselfin 10 апреля в 10:46

Ну для этого гит и нужен.

Никки wrote: а заливать вручную надо в ту же ветку?

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

Аватар пользователя Никки Никки 10 апреля в 11:18

правильно я понимаю в целом: создаем две ветки - main и, например, dev. В main пушим всё, что не в .gitignore. В dev передаем только то, что нужно для локальной разработки и что изначально в .gitignore.
Потом на другом компе для локальной разработки получаем данные из обеих веток, а для прода только из main?

Аватар пользователя gun_dose gun_dose 10 апреля в 11:57

То, что в gitignore вообще ни в какую ветку не надо пушить. Если часто надо деплоить на локальных окружениях и это прямо вызывает у вас затруднения, скопируйте ваш локальный settings.php например в default.local.settings.php и вот его уже добавьте в репозиторий. А при первичном локальном деплое просто нужно скопировать этот файл под именем settings.php

Аватар пользователя Никки Никки 10 апреля в 14:14

дело не только в settings.php. Мне нужны и файлы, которые я использую для тестирования созданных материалов, и дамп бд... который я делаю в конце рабочего дня. Нужна ПОЛНАЯ копия моей локальной разработки на другом компе. Сегодня я на работе, а завтра из дома... Случается такое иногда. И на этот случай нужно чтобы в репозитории была вся локальная версия. Но в то же время этот же репозиторий нужен для деплоя на рабочий сервер.

Аватар пользователя gun_dose gun_dose 10 апреля в 18:56

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

Аватар пользователя pselfin pselfin 10 апреля в 13:35

Рекомендую потратить время на это видео https://niklan.net/blog/186 (автоматизация есть и в гитхабе теперь, сам автор тоже перешел на него).
Будет бОльше понимания процесса.
Вы в гите храните по сути совсем чуть чуть (конфиги, композерские файлы, кастомные темы/модули, я еще js либы храню там, но если их через композер ставить, то не нужно)

Аватар пользователя Никки Никки 10 апреля в 14:07

по этому видео у меня процесс и настроен. И давно. Но это видео не решает мою задачу: возможность вести разработку на нескольких компах, то есть хранить локальную версию целиком (со всеми local.settings.php и .gitignore) на нескольких компах.

Аватар пользователя drupal20 drupal20 11 апреля в 0:58

Не совсем понятно, в чём проблема копировать файлы, которые указаны в .gitignore?
Разработчики сами должны забирать/создавать эти файлы с бекапа или с какого-то определенного сервера (prod, dev и тд).

Аватар пользователя Никки Никки 11 апреля в 9:59

проблемы в том, чтобы все хранилось в одном месте. В конце дня я делаю пару команд git и хочу чтобы в репозитории сохранилось ВСЁ. Чтобы если вдруг завтра придется работать с другого компа, то мне не нужно было тратить время на восстановление файлов разработки, которые не попали в репо из-за gitignore.
Это конечно не такая уж большая проблема... Просто стало интересно, как в принципе люди поступают в подобных случаях.
И еще повторюсь, я пока новичок в git и вероятно хочу от него того, для чего он не предназначен.

Аватар пользователя drupal20 drupal20 11 апреля в 9:59

>> время на восстановление файлов разработки
Нет там файлов для разработки, там только локальные настройки и всякие файлы в /files.

1. Простое решение - хранить всё-всё в бекапе и восстанавливать там где нужно;
2. Плохое решение — убрать с .gitignore нужные вам файлы, чтобы отслеживать в git;
3. Обычное решение — вручную.
4. Чуть получше — использовать всякие sync-и для files, если вам это так нужно. Плюс - для локальных настроек хранить всё в одном месте - dot.env. Как всё это настраивать - отдельная сказка.

Аватар пользователя pselfin pselfin 11 апреля в 10:49

Файлы "разработки" - это что вы под этим понимаете?
Отделите в голове понятия контента и кода, будет проще.
Что касается кода, хранится в гите, контент - нет.
ЗЫ А вам не проще на сервере развернуть дев, и работать с ним из любого места?

Аватар пользователя Никки Никки 11 апреля в 12:36

файлы разработки - то что перечислено в изначальном посте + дамп бд + каталог с файлами. Последние две позиции нужны на этапе разработки, когда есть только локальная версия сайта. Потом это всё, понятное дело, будет браться с прода.

Аватар пользователя marassa marassa 11 апреля в 10:56

pselfin wrote: А вам не проще на сервере развернуть дев, и работать с ним из любого места?

Во, а я думал я один такой Wink

Аватар пользователя gun_dose gun_dose 11 апреля в 15:41

Это работает не только на проде. Можно и нужно точно так же синхронизировать настройки на всех средах. Тогда и бэкап базы таскать не надо туда-сюда.

Аватар пользователя Никки Никки 11 апреля в 17:22

а как синхронизировать БД?
Когда разработка закончена я заливаю базу на прод. И всё. Если нужно доработать что-то и нужна актуальная база - беру ее с прода. А дальше эскспорт/импорт конфигов.
Если забыть о проде. Вот нет его пока. Есть просто два не связанных между собой компа. На обоих docksal с идентичными настройками. Осталось синхронизировать собственно проекты рабочие. Как?

Аватар пользователя gun_dose gun_dose 11 апреля в 22:24
1

Поработал день, покодил, настройки покликал, сделал экспорт конфигов, закоммитил конфиги и код, запушил. На другом компе git pull, затем drush cim. И вот уже все настройки сайта идентичные.
А контент с одной среды на другую таскать особого смысла нет. Иногда даже полезно вручную создать пару нод, чтобы убедиться, что сам процесс создания или редактирования работает правильно.

Аватар пользователя Никки Никки 12 апреля в 9:49

мда... почему-то думала (мало еще опыта с 10-кой), что через конфиги можно только редактировать БД, а не создавать новые таблицы. Оказывается можно всё. И тогда, действительно, вопрос с дампом отпадает.
Спасибо!

Аватар пользователя pselfin pselfin 12 апреля в 9:34

еще подумайте. Я вам не зря про две ветки сказал в начале. Про конфиги Алексей вам выше описал, что собственно было у Никлана в блоге.