Как вы обновляете vue проекты на проде?

Использую vue-cli. По умолчанию dist добавлена в .gitignore, то есть подразумевается, что я комичу изменения, стягиваю их на сервере и там же на сервере запускаю npm run build. Проблема в том, что после запуска npm run build удаляет директорию dist и генерирует новую. Все это время сайт недоступен. Я для решения этой проблемы убрал dist из .gitignore и заливаю уже собранный проект, но это неправильно идеологически. Как делаете вы?
  • Вопрос задан
  • 666 просмотров
Решения вопроса 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
CI/CD (Continuous Integration/Continuous Delivery) сервер ответ на ваши проблемы. Например, bitbucket pipelines, circle ci, gitlab pipelines, jenkins и т.д. Работает так:
  • сервер отслеживает пуши в определенные ветки, например, в master.
  • если в master пришли коммиты, то запускается определенный скрипт, который вызывает сборку (обычно еще перед этим запускаются тесты, если есть).
  • если сборка прошла успешно, то результат этой сборки кладется в отдельную папку -- это называется build artifact
  • этот build artifact тем или иным образом загружается на хостинг -- у всяких там AWS/Azure и т.п. облак обычно есть API для этого, можно передавать файлы через scp или sftp.

Если вся инфраструктура локальная, то и CI/CD сервер обычно ставят локально, например, Jenkins или TeamCity. Но без выделенного админа/девопса проще в облаках настроить, наверное.

P.S. это, конечно, годится не только для проектов на vue, а вообще для любого веба, включая бэкенд.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@McBernar
Можно симлинки использовать. Билдить в новой папке и перекидывать линк на нее. Доля секунды простоя.
Ответ написан
@Dasslier
FrontEnd Developer
По-нормальному при разработке у тебя будет несколько веток для работы. Например, если работаешь один, то достаточно ветки dev и master, на dev - разрабатываешь на локалке, на master делаешь релиз с актуальной базой с боя, и, если все норм - сливаешь ветку мастер с боевым серваком
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы