Предисловие Покопавшись на Хабре, я на удивление не нашел ни одной статьи о полноценном командном рабочем процессе с использованием различных магических штучек в духе Continuous Integration & Continuous Delivery, различных интеграций Github - HipChat (Slack) - CI - Staging and Production via Continuous. Доставка и так далее.
хотя может я просто не умею искать.
Но все же мне хотелось поделиться своим, пусть и небольшим, опытом работы, рассказать о разных вкусностях, которые облегчают жизнь команде, работающей вместе над одним проектом, как это все можно объединить в одну отлаженную систему и уменьшить количество неприятных ощущений в работе.
поясница во время работы над проектом.
Итак, под катом разбор сервиса SemaphoreApp CI, немного об интеграции с другими сервисами и прочих радостях, которые делают нашу жизнь проще.
Сущность
Знаете, я не буду подробно объяснять, что такое CI, зачем он нужен и прочие общие вещи, потому что до меня их уже объяснили многие господа, ну и наглядно, скажем так, здесь: «Введение в непрерывную интеграцию» .А теперь самое главное — подключим наше Rails-приложение к Семафору.
Наша большая цель — сделать регистрацию интуитивно понятной, но мы все равно пройдем ее с комментариями и картинками.
Зарегистрироваться
Мы заходим на semaphoreci.com, и крутой парень похвастается нам тем, как здорово он развертывает в продакшене.
У нас есть выбор между GitHub и Bitbucket. По сути, Semaphore поддерживает множество продуктов Atlassian — Bitbucket, Hipchat, Jira.
Не так уж и плохо.
Далее просто выберите проект и ветку, которую хотите построить.
Нам будет предложено произвести первоначальные настройки проекта.
Среди предлагаемых языков — Ruby, Clojure, JS, PHP, Go и мифический язык «Другой».
Существуют вариации в зависимости от используемой базы данных.
И это все.
У вас есть собственный CI, 5.times { puts 'ураааа!' }
На самом деле, самое простое — просто нажать на кнопки.
Сложность всей интеграции с другими сервисами будет зависеть от вашего умения нажимать CTRL+C и CTRL+V. Ну, читайте по-английски.
Уровень уверенного пользователя ПК, бухгалтера-переводчика.
И, кстати, интеграция с GitHub и Bitbucket уже произошла.
Если ваша сборка не прошла, вы все равно можете сделать запрос на слияние.
И получить по ушам от тимлида за провальную сборку.
Кстати, если у вас есть конфликтующие ветки, то после сборки, даже прошлой, Семафор не позволит вам объединить ваш конфликтующий PR, пока вы не сделаете git rebase -i your_integration_branch и не исправите все конфликты.
Ну а если вам дали зеленый свет, и ваш пулл-реквест, как в правильной команде, рассмотрели и поставили ОК — можете нажать заветную кнопку и на следующий день похвастаться на стендапе.
Коммуникация
Итак, перейдем к следующей части нашей системы — уведомлениям об успешных/неудачных сборках и просто о внутрикомандном общении.Вариантов много, я просто предложил HipChat или Slack. Почему — оба бесплатны, Slack выглядит красивее, но интеграций ограничено (всего 5), их немного меньше, чем у HipChat. HipChat — это безлимитные интеграции, но в целом это то же самое, что и Slack, но выглядит немного скучновато.
Не для модных стартапов.
Небольшой пример со всеми интеграциями, которые я делал в одной комнате HipChat.
Собственно, вот все логи того, что произошло с проектом.
И это еще не все, что туда можно интегрировать.
Ошибки Airbrake, оповещения NewRelic и многое другое.
Теперь мы можем увидеть, на что способен Семафор.
Список настроек студии.
Настройки сборки, конфиги, ENV вары, информация о репозитории, можно задавать приоритетные ветки для сборок, запускать сборки по расписанию (не смог понять почему), деплой (о чём чуть позже), вкладка Notifications, которая с помощью пары копий-вставок настраиваются уведомления по электронной почте/в хип-чате/в резервной комнате/в другом месте и так далее.
Для Hipchat вам нужно знать только название комнаты или идентификатор комнаты и токен, которые легко генерируются в настройках HipChat. Просто введите его, и служба уведомлений готова.
Легкий.
Ну и, конечно, есть вебхуки, если вам нужно настроить оповещения где-то еще.
Непрерывное развертывание
Но, пожалуй, стоит закончить мой рассказ на ноте Continuous Deployment с Heroku. Это фиолетовое сообщение на картинке с интеграцией HipChat было уведомлением от Heroku об успешном развертывании.Хотя, руками я ничего не делал, просто слил свой пул-реквест, который прошел проверку.
Семафор все сделал за меня, и я могу представить себя успешным парнем, который предложил нам воспользоваться этим сервисом.
Допустим, у нас уже есть приложение Rails, и есть сервер Heroku, и наш рабочий процесс состоит в том, чтобы сделать ветку, написать фичу, написать тесты, запустить тесты в ветке, отправить ветку в интеграцию, запустить все интеграционные тесты.
В случае успеха — git push Heroku. Честно говоря, продвижение процесса непрерывной доставки заняло бы у меня меньше времени, чем описание рабочего процесса.
Начнем с интеграции — настройки, вкладка «Развертывание», «Добавить сервер».
Нам предлагают выбор.
Я остановился на героку, выбор за вами.
Далее нам предлагается выбрать тип развертывания: автоматический или ручной.
Первый развертывает Every_successful_build, а это значит, что если сборка не будет успешной, она никуда не денется, а второй метод предоставляет вам чемодан с красной кнопкой, при нажатии на которую сборка будет отправлена на ваш сервер.
Мы ленивы, к тому же пусть наш сервер считается промежуточным, а авторазвертывание тоже будет работать под промежуточный.
Для производства лучше иметь кнопку.
Затем нам будет предложено выбрать ветку для развертывания и ввести API-ключ Heroku. И тогда он сможет все сделать сам.
Вы также можете установить аддон для героку — Deploy Hooks, в котором есть хук HipChat, который будет уведомлять вас об успешных или неудачных развертываниях.
Хотя неудачных развертываний не будет, но если сборка провалится, повторюсь, развертывания не будет. Я надеюсь, что это будет кому-то полезно.
Теги: #rails #непрерывная интеграция #непрерывная доставка #semaphoreapp #heroku #hipchat #Slack #разработка веб-сайтов #ruby onrails
-
Михаил Фридман Вложил $200 Млн В Uber
19 Oct, 24 -
Даунтайм Clodo И Странная Поддержка
19 Oct, 24 -
Авторские Права И Пожертвования
19 Oct, 24