Где / public / assets генерируются в рабочем процессе go buffalo? - PullRequest
0 голосов
/ 07 ноября 2018

В go buffalo есть сгенерированный файл .gitignore, который игнорирует public / assets. Однако в то же время сгенерированные css и js имеют решающее значение для получения «настоящего» приложения для буйволов. Таким образом, есть разъединение, которое я не до конца понимаю, а именно: что-то, казалось бы, критическое для развертывания приложения, должно по умолчанию отсутствовать в любой системе контроля версий, которая создает само приложение.

Что я заметил

  • Buffalo build не генерирует контент в общедоступных / ресурсах.

  • buffalo dev также не генерирует это содержимое.

  • запуск команды buffalo dev после удаления public/assets/* приводит к тому, что сайт не имеет CSS, что означает, что он нарушает функциональность.

Итак, так. из того, что я могу сказать / public / assets являются существенными и не динамически создаваемыми.

Итак, мой вопрос, таким образом, как я могу восстановить public / assets в моем рабочем процессе buffalo во время сборки (т.е. как я могу сохранить значения по умолчанию .gitignore) или , где люди обычно упаковывают свои активы, если не в управлении версиями?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Итак, чтобы ответить на первоначальный вопрос о том, где генерируются public / assets - ответ будет «во время создания» или «во время сборки, если у вас их нет, и если вы загружаете пустой каталог». Надеемся, что после слияния PR, упомянутого ниже, ответ на этот вопрос будет «во время создания или во время сборки, если они еще не существуют в вашем репо (то есть, потому что они gitignored)».

Две точки (почему локальная сборка не генерирует их + почему Docker build не генерирует их) имеют совершенно не связанные и разные ответы, поэтому я буду рассматривать их каждый в отдельных пунктах.

  • Мы обнаружили, что на самом деле, в зависимости от состояния вашего хранилища, если вы теряете / удаляете файлы веб-пакета, среда буйвола не восстанавливает их для вас, и в любом случае это не ошибка, потому что Это допустимый вариант использования для запуска буйвола без генерации каких-либо активов (хотя это не тот вариант использования, который мне кажется очень полезным, возможно, стоит предложить изменение, чтобы сделать буйвола более самоуверенным в этом отношении).

  • Что касается самой сборки Docker, кажется, что если вы добавите оператор mkdir, чтобы убедиться, что public / assets существуют до запуска сборки Buffalo (т.е. в вашем Dockerfile), то вы можете компенсировать тот факт, что вы игнорируете этот каталог, и он будет правильно заполнен в статической сборке.

Поскольку последний вариант использования является более важным, я создал запрос на извлечение для решения этой проблемы (то есть, чтобы вам не нужно было вручную добавлять шаг mkdir public / assets) под руководством сообщества буйволов, которое можно найти здесь: https://github.com/gobuffalo/buffalo/pull/1447.

Короче говоря: до слияния PR, если вам нужны ваши ресурсы для создания ваших развертываемых объектов (что вы, вероятно, делаете), либо удалите строку public / assets из gitignore и передайте их для контроля версий, чтобы ваш код мог быть непосредственно собран без внешних зависимостей, ИЛИ просто убедитесь, что вы строите свой код в том же месте, где вы запускаете Buffalo Dev. Если есть третий ответ. Первое, с моей точки зрения, является более дружественным к облакам решением, но я новичок в буйволах, так что я могу неправильно понять идиомы.

Отказ от ответственности: я отвечаю на этот вопрос, потому что думаю, что он может быть полезен для людей, но я не эксперт по буйволам. Существуют гораздо более глубокие технические точки зрения на то, как активы работают с документами на буйволов. / веб-сайт (https://gobuffalo.io/en/docs/assets)

0 голосов
/ 07 ноября 2018

Есть управление исходным кодом, которое содержит источник, который вы создали для своего приложения, есть сервер сборки, который превращает источник в развертываемый артефакт (ы), и есть артефакты, которые содержат все необходимое для запуска приложения (то есть ресурсы , скомпилированный двоичный файл, без исходного кода).

Контроль источника, как правило, является плохим решением для хранения артефактов; вот почему, например, GitHub имеет функцию релизов. Найдите правильное решение для ваших артефактов вне контроля источника - то, что вы выберете, будет зависеть от вашей среды сборки и операционной системы и вашей системы развертывания. Например, S3 является популярным выбором для хранения внутренних артефактов сборки, поскольку он очень прост в использовании и достаточно дешев.

...