2016-11-22 3 views
0

установки:GIT документооборота (все файлы) в зависимости от производства (частичные файлы)

1 GIT репозиторий, который содержит клиент/сервер/общий код, в настоящее время на 1 филиал.

процесс сборки:

  • Клиентпредставляет собой веб-приложение, и должно быть минимизировано/в комплекте/и т.д., которые результаты в одном файле
  • Сервер остается неизменным на данный момент, хотя позже он может быть связан с

Проблема:

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

Решение:

??? - Как мне с этим справиться? Создать дополнительный репозиторий, создать несколько ветвей? Как это обычно делается?

ответ

3

Как правило, вы хотели бы разделить свой контроль источника, процесс сборки и развертываемые артефакты. Git в первую очередь предназначен для Source Control, принятая практика заключается только в том, что в нем есть исходный код.

Тогда вы бы создали его с помощью некоторого инструмента построения (Jenkins, bamboo и т. Д.) Затем вы можете использовать результат сборки из инструмента построения или, если вы предпочитаете использовать элемент управления версиями для своих артефактов, таких как Nexus или artifactory ,

Это может показаться сложным, но в будущем избежать многих проблем.

+0

Согласен. Вы на самом деле говорите о процессе развертывания, в котором вы перемещаете свой код с разработки на производство. – ItayB

+0

Что-нибудь конкретное для веб-приложений? Я использую node.js для сервера и webpack для клиентского javascript на данный момент.В настоящее время изучаем, что в конечном итоге может ответить на мой вопрос: http://stackoverflow.com/questions/35054082/webpack-how-to-build-production-code-and-how-to-use-it –

+0

Не могу комментировать опыт, но следующий [ответ] (http://stackoverflow.com/questions/21259181/how-to-package-deploy-node-js-express-web-application), кажется, говорит о загрузке всех файлов. Однако следующая статья [https://strongloop.com/strongblog/node-js-deploy-production-best-practice/] также имеет смысл (исходя из фона java) – dubes

0

Вы можете использовать .gitattributes (5)export-ignore directive для выбора файлов, находящихся в вашем контроле версий, но вам не нужно производить.

Если вы используете систему развертывания, такую ​​как Capistrano 3, она фактически будет использовать git-archive (1). Эта команда создаст архив, который будет развернут в папке выпуска, и он будет соблюдать правила export-ignore в вашем файле .gitattributes.


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

Я также могу рекомендовать, чтобы вы фактически разворачивали свой клиентский файл на CDN, а сервер просто служил HTML-странице с версированным клиентом из вашего CDN.

+0

Спасибо, я проверю это –