Непрерывная интеграция, нужен инструмент

Sufir

Я не волшебник, я только учусь
Товарищи народ, у кого что используется в качестве инструмента для CI? Может кто-то посоветовать что выбрать?
Хочется что-то простое в использовании, но достаточно мощное. Я только Travis CI и Scrutinizer немного щупал, они отличные конечно. PHPCI, Jenkins, TeamCity что ещё есть?..
 
Последнее редактирование:

stalxed

Новичок
Разве все CI системы не делегируют "грязную работу" другим?
Т.е. собрать C# проект MS Build`у, Java проект анту, и т.д.?

И вот с авто деплоем в php караул, человечный автодеплой я видел только в Zend Server, кстати он имеет из коробки отличную интеграцию с Atlassian Bamboo.
Но и в автодеплое у Zend Server проблем хватает, как выглядит автодеплой в Zend Server:
1) Обычный зип архив, в котором содержится весь код приложения + 2 xml файла с подробностями для деплоя + специальные скрипты, которые вызывает Zend Server на разных стадиях.
2) Этот зип архив можно скормить Zend Serverу 2 способами: через графическую админку и через API(что и использует Atlassian Bamboo).
3) В xml файле можно указать какие расширения php проверить и какие настройки php чекнуть, ну, например, можно проверить лимиты памяти, времени, etc.
4) В xml файле можно задать список необходимых опций, их будет необходимо задать через веб интерфейс админки(сгенерится форма с input полями) или передать по API.
5) Есть php файлы, называемые скриптами(ваш кеп), которые Zend Server будет вызывать, например:
- скрипт перед распаковкой zip архива
- скрипт после распаковки zip архива
- скрипт перед деактиваций сервера
- скрипт после активации сервера
6) Каждый скрипт получает значение опций, директорию деплоя и ещё ряд переменных, и может делать что хочет, ну обычно это создать схему данных, отредактировать конфиг, етс
7) Каждая версия деплоя распаковывается в папку:
/usr/local/zend/var/ apps/http/<project_name>/80/<version>
После успешного выполнения ваших скриптов(если успешно...) конфиги веб сервера переключаются на новую версию.
И вы можете 1 кнопкой откатиться на прошлую версию, будут вызываться другие ваши скрипты(ответственные за rollback), которые как бы должны сделать откат в БД и прочее(это на ваших плечах).

Вкратце так, выглядит очень по человечески это всё, но Zend этот компонент развивает крайне слабо, они 3 раза ПОЛНОСТЬЮ меняли структуру и дизайн админки, запилили свой аналог редиса, варниша, брокера очередей(или нечто подобное, они очереди и крон как-то непонятно скрестили), но не вижу изменений в этом компоненте уже давно.

А много мелочей в нём не хватает, например лог некуда из php скриптов писать, приходится в папку самого приложения, если баг в скрипте деплоя - то хрен его найдёшь, так как их же компонент Zend Monitor не доступен из скриптов деплоя, нет хистори апдейтов приложения и прочее, прочее, прочее...

Если кто-то знает аналоги, ПРОШУ ПОДСКАЖИТЕ!
 
Последнее редактирование:

Absinthe

жожо
И вот с авто деплоем в php караул, человечный автодеплой я видел только в Zend Server, кстати он имеет из коробки отличную интеграцию с Atlassian Bamboo.
Разве нельзя настроить CI деплоить через инструмент для деплоя, например capistrano?
 

stalxed

Новичок
Разве нельзя настроить CI деплоить через инструмент для деплоя, например capistrano?
Ну вся грязная работа будет на capistrano.

У Zend Server есть плюс, в задании сервера CI можно скачать композер зависимости, собрать этот zip архив, его отправить по API на тестовый сервер. И в артифактах получить готовый зип архив - инсталятор, и уже в продакшене апдейтить проект через веб админку Zend Server в удобное время, когда юзеров поменьше, протестив бекапы.

В capistrano намного меньше автоматизации?
 

Absinthe

жожо
В capistrano намного меньше автоматизации?
Я его в ручном режиме юзал только, не через CI.
CI в проектах, в которых участвовал, админы настраивали, либо мы юзали SaaS, в котором настройка была очень простой.

capistrano сам собирает проект (composer, ассеты, javascript), кладет его в папку рядом с текущей и переключает симлинк.
От программиста требуется только набрать команду cap production deploy.
 

stalxed

Новичок
@Absinthe, ну Zend Server прикольнее выглядит, практически готовый инсталятор дает, даже проще, чем инсталятор WordPressa получается.

По сути как выглядит деплой симфони приложения вручную:
1) Залить файлы;
2) Подправить app/config/parameters.yml
3) Вызвать из консоли команды типа:
php app/console database:migrate

Php скриптом данные действия сделать - не больше сотни строк.
И получается можно этот зип архив-инсталятор ставить как вручную, немного помучившись, если зенд сервера нет, или тупа скормить графической админке Zend Server`a.
 

Absinthe

жожо
ну Zend Server прикольнее выглядит, практически готовый инсталятор дает, даже проще, чем инсталятор WordPressa получается.
Простота и гибкость - вещи разные и часто противоположные.

По сути как выглядит деплой симфони приложения вручную:
Ты забыл, что нужно еще набор общих директорий отслеживать, и после сборки приложения делать на них симлинки.
Еще забыл о том, что нужно несколько параллельных релизов иметь в файловой системе, чтобы иметь возможность быстро сделать rollback.
И шаг 2 у тебя лишний.
 

AmdY

Пью пиво
Команда форума
Для деплоймента http://deployer.org есть рецепты даже для всяких вордпресов. А так Jenikins, бесплатный с ныжным функционалом, есть http://jenkins-php.org/
Смотрел PHPCI, но там треш с просмотром статистики, графики неюзабельные, фиг увидишь вовремя деградацию проекта.
 

fixxxer

К.О.
Партнер клуба
Посмотрел этот deployer.org, там все рецепты предлагают запуск composer install и подобного прямо на сервере. Seriously?

Я сам в основном олдскульно makefile-ами и шеллскриптами деплою :), но видел тут http://magephp.com/ - вменяем.
 

WMix

герр M:)ller
Партнер клуба
makefiles прикольно сам пользую диаграмки нагенерить, доки, да потестить локально но это же только деплой, ci чуток больше делает (статистика).
 

AmdY

Пью пиво
Команда форума
@fixxxer рецепты плохи, а некоторые даже вовсе нерабочие, но для примера подойдут. В остальном всё ок и никакого yml синтаксиса. Есть ещё rocketeer, но там как раз готовых примеров не хватает для быстрого старта.

p.s. Вы jenkins используете или что-то другое?
 

fixxxer

К.О.
Партнер клуба
Ну да, я про чистый деплой. CI - Bamboo хороший, удобно интегрируется с прочими джирами. Если мало денег, то Jenkins :) Тимсити видел издалека, выглядит тоже хорошо. PHPCI не смотрел, я с подозрением отношусь к проектам из разряда "специально для php".
 
Последнее редактирование:

Sufir

Я не волшебник, я только учусь
А GitLAb CI никто не видел, не щупал? У нас как раз GitLab используется, так что было бы разумно, если нормальный инструмент.
 

AmdY

Пью пиво
Команда форума
что-то графиков в описании не видно, для меня важно именно отображение статистики а проект билдить можно и вовсе по хуку.
 
Сверху