Это вторая часть спонсируемой серии по Codeship , безопасной, облачной непрерывной интеграции и сервису доставки. Если вы пропустили первую часть, вы можете вернуться и прочитать ее здесь .
Что такое Codeship?
Codeship — это служба непрерывной доставки, ориентированная на скорость, надежность и простоту. В этом уроке я рассмотрю основы Codeship из первой части, а затем расскажу о развертывании вашего кода.
Сначала я покажу, как использовать Codeship для развертывания в AWS CodeDeploy. Затем мы рассмотрим новый ParallelCI Codeship , который ускоряет ваши тесты и сборки, делегируя задачи параллельно различным виртуальным машинам. Я также представлю API Codeship, полезно, если вы хотите более автоматизированный контроль над сервисами Codeship.
Давайте начнем с обзора того, что делает Codeship.
Фон
С Codeship вы настраиваете службу для создания, тестирования и развертывания приложения из менеджера исходного кода на промежуточных и производственных платформах по вашему выбору. Сервис предлагает множество мощных опций настройки. В настоящее время Codeship интегрирован с популярными менеджерами исходного кода GitHub и Bitbucket. Он поддерживает различные языки программирования (Ruby on Rails, Node.js, PHP, Java, Go, Dart и т. Д.) И платформы развертывания (Amazon Web Services, Heroku, Google App Engine и т. Д.).
Практика непрерывной интеграции включает в себя повторное автоматическое тестирование и объединение кода с уведомлениями, чтобы предупредить разработчиков о проблемах в их коде в режиме реального времени. Codeship сочетает это с практикой непрерывной доставки , которая обеспечивает регулярное развертывание кода после того, как изменения прошли автоматические тесты.
По сути, когда вы отправляете свой код на GitHub, Codeship перестраивает ваше приложение на своих защищенных серверах и запускает ваши автоматизированные тесты. Если тесты не пройдены, он уведомляет вашу команду разработчиков по электронной почте или через интеграцию с популярными сервисами, такими как Slack, HipChat и т. Д. Если тесты пройдены, Codeship следует вашему определенному конвейеру для перемещения кода на промежуточные или производственные серверы, как указано.
Работа с такой службой, как Codeship, может минимизировать последствия ошибок, ускорить их обнаружение и сделать вашу команду более удобной и опытной в выпуске регулярных пошаговых улучшений для вашей платформы — надеюсь, улучшая вашу отзывчивость к вашим клиентам и вашему рынку.
Codeship помогает вашей команде писать и развертывать свой код с большей уверенностью.
Недавно Codeship анонсировала новую захватывающую функцию для ускорения ваших тестов. Это называется ParallelCI.
Что такое ParallelCI?
ParallelCI позволяет вам разделить ваши тестовые команды между несколькими виртуальными машинами сборки (VM), чтобы ускорить время сборки. Выполняя параллельные тесты, Codeship повышает производительность вашей команды с помощью более быстрых сборок. Вы можете использовать ParallelCI для настройки вашего проекта с десятью параллельными конвейерами, чтобы получить 10-кратное увеличение скорости для вашего набора тестов.
Вы можете прочитать тематические исследования от клиентов Codeship Bannerman и LendingCrowd , которые сократили время тестирования на 30% и 50% соответственно.
Напоминаю, что я участвую в обсуждениях ниже. Если у вас есть вопрос или предложение по теме, пожалуйста, оставьте комментарий ниже. Вы также можете связаться со мной в Twitter @reifman или написать мне напрямую.
Настройка вашего развертывания
Теперь давайте начнем исследовать возможности развертывания Codeship более подробно.
Вы выбираете, что Codeship сделает с вашим кодом после прохождения тестов. Например, возможно, вы обновляете свой промежуточный сервер для дальнейших тестов, или, возможно, вы раскатываете все на своих производственных серверах. Codeship позволяет вам определять сложные конвейеры для тестирования и развертывания.
Кстати, Codeship также предлагает эту бесплатную и очень информативную электронную книгу: Эффективность в рабочих процессах разработки . Вы можете проверить это вместе с Codeship Blog , который держит вас в курсе новых разработок и лучших практик.
Журнал сборки проекта
Я предполагаю, что вы следовали нашему первому уроку, зарегистрировались и начали использовать Codeship.
Если вы посетите журнал сборки вашего проекта, вы увидите список последних результатов. Нажмите на зеленую кнопку успеха .
Откроется информация о результатах сборки и меню боковой панели параметров сборки .
Вот меню параметров сборки. Нажмите на обзор настроек теста :
Здесь вы увидите меню боковой панели « Параметры проекта» слева, где мы найдем нужные нам варианты развертывания.
Вот подробный вид меню настроек проекта. Нажмите на развертывание :
Настройте ваши развертывания
Codeship обеспечивает готовую интеграцию развертывания со многими популярными хостинговыми решениями, включая Google AppEngine, Amazon Web Services, CodeDeploy, Heroku, Engine Yard, Nodejitsu и многие другие. Codeship является официальным партнером AWS и CodeDeploy .
Codeship предлагает несколько учебных пособий для различных платформ и широкий спектр документации для вариантов непрерывного развертывания .
Я собираюсь показать вам два примера. Сначала я разверну свою раннюю сборку Yii2 Framework на основе PHP в AWS с CodeDeploy. Затем я соберу проект Ruby Discourse, используя ParallelCI, чтобы ускорить время сборки.
Использование Amazon CodeDeploy с Codeship
В первой части я использовал Codeship для запуска автоматических тестов на развилке основанной на PHP платформы Yii2 Framework . Теперь давайте настроим Codeship для развертывания моего проекта на сервере AWS с использованием AWS CodeDeploy .
Сначала давайте пройдемся по Amazon AWS CodeDeploy:
Я предоставлю базовое руководство по AWS CodeDeploy, но моя цель не в том, чтобы подробно описать его здесь. Вместо этого я хочу помочь вам настроить соединение Codeship с AWS CodeDeploy.
Сначала посетите страницу « Начало работы с AWS CodeDeploy» и выберите пользовательское развертывание :
Затем создайте новое приложение . Я уже создал экземпляр EC2 и отметил его CodeDeployDemo .
Выберите конфигурацию развертывания . Я уже настроил сервисную роль:
Теперь, когда ваше приложение AWS CodeDeploy настроено, вам нужно настроить группу Deploy для своего экземпляра.
Это будет отличаться в зависимости от вашего приложения и местоположения корзины S3:
Тогда, давайте вернемся к Codeship. Введите свой проект и нажмите « Настройки проекта» в правом верхнем углу. Затем нажмите Развертывание :
Затем нажмите кнопку CodeDeploy :
Заполните параметры свойства AWS Code Deployment с помощью своих ключей доступа Amazon, секретного ключа, а также имени приложения CodeDeploy и группы развертывания. Также укажите ваш S3 Bucket:
Теперь вы можете просмотреть документацию Codeship для использования AWS CodeDeploy и сопутствующего сообщения в блоге .
В следующий раз, когда вы отправите коммит, Codeship создаст ваше приложение, протестирует его и запустит операцию AWS CodeDeploy.
Codeship также предлагает несколько видеогидов на своем канале Vimeo, которые могут вас заинтересовать. Например:
- Развертывание Ruby on Rails в Heroku
- Развертывание приложения Node.js в Nodejitsu
- Развертывание приложения Django в Google AppEngine
Здесь они в порядке. Затем мы углубимся в использование ParallelCI для ускорения наших тестов.
Развертывание Ruby on Rails в Heroku
Вот краткое руководство по развертыванию приложения Ruby on Rails из GitHub в Heroku. Ниже приведено видео:
Развертывание приложения Node.js в Nodejitsu
Вот краткое руководство о том, как развернуть приложение Node.js из GitHub в Nodejitsu , и видео ниже:
Развертывание приложения Django в Google AppEngine
Вот краткое руководство о том, как настроить непрерывную интеграцию и непрерывное развертывание для приложения Django из GitHub в App Engine , и видео ниже:
Использование ParallelCI с Codeship
Я собираюсь создать форк популярной дискуссионной платформы сообщества Discourse для Ruby on Rails. Затем я добавлю проект в Codeship для моей раздвоенной копии Discourse.
Нажмите на Environment и настройте переменные окружения для нашего проекта Rails:
Затем мы будем использовать следующие команды установки для настройки инструкций по сборке:
1
2
|
bundle install —without development —deployment —retry=3 —jobs=3
bundle exec rake db:migrate
|
Затем я внесу пример изменения в файл ReadMe, чтобы начать сборку Codeship.
Вот результаты успешной сборки:
Тестирование с одним конвейером
Теперь давайте добавим следующие тесты в один конвейер.
1
2
3
|
bundle exec rake qunit:test
bundle exec rake plugin:spec
bundle exec rspec —profile
|
В следующий раз, когда мы сделаем коммит, Codeship создаст код и запустит тест. С одним конвейером это занимает почти десять минут.
Теперь перейдем к ParallelCI.
Тестирование с несколькими конвейерами
С ParallelCI каждый проект имеет несколько тестовых конвейеров, которые выполняются параллельно. Каждый из этих конвейеров работает на виртуальной машине независимо от другого. Codeship сначала запустит ваши команды установки, а затем любые произвольные команды тестирования, которые вы определили для этого конкретного конвейера, через интерфейс. Чтобы облегчить различение различных конвейеров, вы можете указать понятное имя для каждого из них.
Вот видео-пошаговое руководство с другой кодовой базой о том, как мы настроим ParallelCI для ускорения этих тестов:
Для моего первого тестового конвейера я собираюсь запустить следующие тесты:
1
2
3
|
bundle exec rake qunit:test
bundle exec rake plugin:spec
bundle exec rspec spec/controllers spec/models —profile
|
Для моего второго тестового конвейера я выполню следующее:
1
2
|
rm -fr spec/controllers spec/models
bundle exec rspec —profile
|
Затем я добавлю новый коммит, и вы увидите, что ParallelCI работает ниже с отдельным журналом состояния каждого конвейера:
Всего через 7 минут 26 секунд двухпроводная сборка завершается:
Это примерная экономия времени почти на 30%. Это хороший пример того, как Codeship ParallelC позволяет сэкономить время вашей команды при выполнении более сложных последовательностей сборки и тестирования. Также имейте в виду, что Codeship допускает до 20 параллельных тестовых конвейеров — прирост скорости здесь может быть экспоненциальным.
Помните, что если у вас настроено развертывание для определенной ветви и каждый тестовый конвейер сообщает об успешном запуске, ваш конвейер развертывания будет запущен. Вам не нужно ничего менять, если вы используете одно из интегрированных развертываний Codeship, например Heroku, AWS CodeDeploy, Google App Engine и т. Д.
Также обратите внимание, что поскольку команды сборки и развертывания выполняются на нескольких виртуальных машинах, артефакты, созданные на этапах тестирования, будут недоступны во время развертывания. Если вам нужны артефакты из предыдущих шагов, обязательно создайте их заново во время развертывания, используя сценарий развертывания, добавленный до фактического развертывания.
Есть еще одна вещь, которую стоит упомянуть, Codeship API.
Кодекс API
Если вам нужен еще больший контроль над Codeship для полного написания сценариев и автоматизации ваших служб непрерывной доставки, Codeship предлагает API :
Вы можете настроить сборки вашего проекта и перезапустить их при необходимости.
В заключение
Я хотел бы обобщить то, что мы узнали о Codeship:
- Codeship — это служба непрерывной доставки, ориентированная на скорость, надежность и простоту.
- Он автоматически тестирует и развертывает ваши приложения.
- Он интегрирован со всеми соответствующими системами управления исходным кодом, например, GitHub и Bitbucket.
- Он поддерживает различные языки программирования, например Ruby on Rails, Node.js, PHP, Python, Go, Dart и т. Д.
- Он хорошо интегрирован с различными популярными решениями для развертывания, такими как Heroku, AWS CodeDeploy, Google App Engine и т. Д.
- Он предоставляет уведомления по электронной почте и в чате, таких как Slack, HipChat и т. Д.
- Вы получаете 100 сборок в месяц и 5 частных проектов бесплатно, чтобы начать легко и без риска. Проекты с открытым исходным кодом могут использовать Codeship бесплатно. Образовательные проекты получают скидку 50%.
- Новейшая функция Codeship ParallelCI позволяет запускать сборки параллельно, что значительно ускоряет выполнение тестового набора.
- Если вы хотите автоматизировать Codeship, вы можете использовать его API.
Codeship может обеспечить ценность для небольших групп с их бесплатным или базовым планом, а также для очень крупных компаний, которым требуется до 20 параллельных тестовых конвейеров, с их планом Enterprise. См. Страницу цен Codeship для получения дополнительной информации. Есть даже бесплатная 14-дневная пробная версия для каждого, чтобы опробовать свою конфигурацию 20 параллельных конвейеров .
Я надеюсь, что вы попробуете Codeship. Поделитесь своим опытом в комментариях. Как всегда, пожалуйста, не стесняйтесь оставлять свои вопросы тоже. Вы также можете связаться со мной в Twitter @reifman или написать мне напрямую. Посетите мою страницу инструктора Tuts +, чтобы увидеть другие уроки, которые я написал.
Ссылки по теме
- Сайт Codeship
- Блог Codeship
- Документация по кодексу
- Codeship Видеогиды
- Эффективность в рабочих процессах разработки (электронная книга)
SaveSaveSaveSave