Каковы лучшие практики Jenkins при сборке с Grunt и развертывании с Capistrano?

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

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

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

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

Теперь мне было интересно, если это "правильный" способ использования сервера сборки. Я сталкиваюсь с некоторыми логическими проблемами. Подобно:

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

И / или:

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

Может кто-нибудь сказать мне, если я строю и развертываю, как это должно быть? Или я слишком сильно усложняю это для меня? Мне действительно интересно, как люди с большим опытом в этом используют Дженкинса, Гранта, Бауэра, Композитора, Капистрано и т. Д. В процессе сборки.

1 ответ


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

Другие вопросы по тегам