Каковы лучшие практики 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
Кроме того, мне интересно, есть ли у вас какие-либо отзывы о вашем текущем проекте.