Artisan для Directus | Деплой и Code driven подход
Не маленькая штука выйдет...
На проекте, под который я её делаю есть одна проблема.
Как и любого проекта на любой CMS - нет рабочих миграций и initial data.
Люди работали через rsync, просто копируя полностью весь проект...
Как на новый сервер, так и новому разработчику.
В целом - в wordpress эта практика считается нормальной, и ведется версионный учет только самописных шаблонов и плагинов.
Но этот проект позиционируется как гораздо более серьезная вещь, и на мой взгляд, не допустимо так халатно относиться к организации работы вокруг проекта.
Думал мне немного поможет эта утилита организовать полный цикл рабочего процесса, приближенный к laravel sail
В целом - твердое ДА!
Оно поможет.
Со всем можно смириться и разобраться, но самое узкое место - это данные и файлы.
Исопльзуя directus-sync — я теперь могу хранить структурированный snapshot всей модели данных directus.
Из минусов - накатывается долго и версионность обеспечивается коммитами, а не наложением версий, как при классических миграциях.
Дальше данные.
Добавил поддержку миграций, но оказалось они исполняются при первом запуске интанса вместе с системными, так что посев базы делать оттуда смысла не имеет, если миграции не описывают модель данных.
Таким образом я оставляю поддержку создания стабов миграций, но отказываюсь от их использования.
Вместо них реализовал систему fill-initial-data
Она представляет из себя bash скрипт, который проходится в цикле по директории directus/initial-data по отсортированным по имени sql файлам, и применяет их через psql напрямую в базу.
Штука не надежная, но рабочая - главное обеспечить правильный порядок, иначе могут быть проблемы со связями. Достигается правильный порядок указанием префикса YYYY_MM_DD_TIMESTAMP вначале имени каждого файла, подобно laravel.
Данные накатить теперь можно, при том даже не проблема достать их из существующей базы. Отлично!
А теперь uploads...
Вот с ним хз что делать)
Кроме фактического существования файла - он должен быть в базе данных, при этом у него есть relation к виртуальным директориям, для отображения в админке.
А на их id ссылаются другие сущности...
У меня есть сомнения, что это вообще нужно помещать в initial-data, тк в laravel никогда и не сталкивался с такой задачей, но именно здесь она меня напрягает.
В целом работать теперь думаю можно, а helm я скорее всего допилю. Уже отрефакторил немного.
Post #447
119
Cododel.dev | Александр Теперь это helm (штурвал) Скоро обновление, не уверен что очень, но скоро. Думаю сделать свой полноценный sail для directus, раз уж мне приходится с ним работать на проекте. Утилита уже поддерживает создание файлов миграций и управление directus-sync cli…


- 👍 4