Каковы рекомендации Дженкинса по созданию с помощью Grunt и развертыванию с помощью Capistrano?

#git #jenkins #capistrano #build-server

#git #дженкинс #capistrano #сборка-сервер

Вопрос:

В настоящее время я настраиваю сервер сборки в нашем офисе, и мне было интересно, что лучше всего подходит для этого. Я знаю, что каждая ситуация требует другого подхода, и есть миллион способов достичь одной и той же цели, но поскольку я новичок в Jenkins и концепции построения серверов в целом, мне было интересно, правильно ли я это делаю.

Наша компания специализируется на создании веб-сайтов для различных клиентов на различных платформах, таких как WordPress или Magento. Теперь у меня есть следующая настройка:

Мы переносим наши изменения в главную или промежуточную ветку в Git. Дженкинс опрашивает эти ветви и при обнаружении изменений выполняет следующие действия:

  • Извлеките репозиторий из Git ( master в этом примере)
  • Извлеките ветку с именем build-master
  • Сбрасывает эту ветку на origin/master
  • Выполняет a npm install , если a package.json найдено.
  • Выполняет a grunt build , если a Gruntfile.js найдено.
  • (здесь есть место для других вещей, таких как тесты phpunit или CasperJS)
  • Фиксирует изменения и возвращает их обратно origin/build-master .
  • Выполняет a cap build-master deploy , чтобы позволить Capistrano обрабатывать развертывание на удаленном сервере.

Теперь мне было интересно, является ли это «правильным» способом использования сервера сборки. Я столкнулся с некоторыми логическими проблемами. Нравится:

Например, программное обеспечение поставщика. Например, когда у меня есть различные библиотеки JS с помощью Bower (которые находятся в js/vendor папке, игнорируемой git), я могу объединить и преобразовать их в уменьшенный JS-файл, чтобы они были переданы в build-master репозиторий (для Capistrano). Но когда у меня есть PHP-библиотеки (например, с Composer) Я не уверен, как с этим справиться. Они расположены в php/vendor папке, игнорируемой git, но их необходимо включить в build-master ветку, чтобы они были развернуты на live-сервере. В настоящее время я делаю это, добавляя a .gitignore.build в свой репозиторий, который включает в php/vendor себя -folder , и перезаписываю существующий .gitignore с помощью этого перед фиксацией и нажатием origin/build-master .

И / или:

Скомпилированные файлы. Когда я не хочу включать некоторые файлы (например, CSS-файлы, созданные из SASS, например), я помещаю их в .gitignore . Но опять же, когда Capistrano собирается его развернуть, я хочу, чтобы скомпилированный, объединенный и уменьшенный CSS-файл находился в моем репозитории, иначе он не будет размещен на моем рабочем сервере.

Может кто-нибудь сказать мне, создаю ли я и развертываю так, как это «должно» быть? Или я слишком усложняю это для себя? Мне действительно интересно, как люди с большим опытом в этом используют Jenkins, Grunt, Bower, Composer, Capistrano и т. Д. В процессе сборки.

Комментарии:

1. Одна вещь, о которой я задумался, — это фиксация двоичных файлов. Поскольку вы это делаете, интересно, работаете ли вы над тем, чтобы проверка разработчика оставалась тонкой, без двоичных файлов?

Ответ №1:

Я ищу точно такой же ответ. Я нахожусь в такой же ситуации, и мне интересно, как это можно сделать с наилучшей начальной конфигурацией.
Поскольку вам интересно узнать об использовании grunt для развертывания, есть этот учебник, который может быть полезен для вас, я надеюсь, это даст начальные идеи: https://weluse.de/blog/continuous-deployment-with-yeoman-and-jenkins.html
Кроме того, мне интересно, есть ли у вас какие-либо отзывы о вашем текущем проекте.