Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Deployment
Code

Codeship: развертывание пайплайнов и ParallelCI для более быстрых результатов

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Continuous Integration With Codeship.
Codeship: Continuous Integration and Delivery Made Simple
Sponsored Content

This sponsored post features a product relevant to our readers while meeting our editorial guidelines for being objective and educational.

Russian (Pусский) translation by Masha Kolesnikova (you can also view the original English article)

Это вторая часть спонсируемой серии Codeship, безопасной, облачной непрерывной интеграции и доставки. Если вы пропустили первую часть, вы можете вернуться и прочитать ее здесь.


Что такое Codeship?

Codeship - это служба доставки, которая ориентирована на скорость, надежность и простоту. В этом уроке я рассмотрю основы Codeship из первой части, а затем мы проведем развертывание вашего кода.

Во-первых, я покажу, как использовать Codeship для развертывания в AWS CodeDeploy. Затем мы рассмотрим новый ParallelCI от Codeship, который ускоряет ваши тесты и сборки, делегируя задачи параллельно с разными виртуальными машинами. Я также представляю API-интерфейс Codeship, полезный, если вы хотите более автоматизированный контроль над услугами Codeship.

Начнем с обзора того, что делает Codeship.

Background

С помощью 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 From Your Developers to Your Customers

Работа с такой услугой, как Codeship, позволяет свести к минимуму выпадение ошибок, ускорить их обнаружение и сделать вашу команду более комфортной и компетентной в том, чтобы регулярно добавлять дополнительные улучшения в вашу платформу, надеясь улучшить отзывчивость для ваших клиентов и вашего рынка.

Codeship помогает вашей команде с повышенной уверенностью писать и развертывать свой код.

В последнее время Codeship объявила о захватывающей новой функции для ускорения ваших тестов. Она называется ParallelCI.

Что такое ParallelCI?

ParallelCI позволяет разделить ваши тестовые команды на несколько виртуальных машин сборки, чтобы ускорить время сборки. Проводя тесты параллельно, Codeship повышает производительность вашей команды за счет более быстрой сборки. Вы можете использовать ParallelCI для конфигурирования вашего проекта с использованием до десяти параллельных конвейеров, чтобы получить увеличение скорости 10x для вашего набора тестов.

CodeShip Diagram of ParallelCI Parallel Test Suites in Action

Вы можете прочитать примеры из Codeship клиентов Bannerman и LendingCrowd, которые сократили время тестирования на 30% и 50% соответственно.

CodeShip Lending Crowd Case Study on ParallelCI - Faster Test Times

Как напоминание, я участвую в обсуждениях ниже. Если у вас есть вопрос или предложение, пожалуйста, напишите комментарий ниже. Вы также можете связаться со мной в Twitter @reifman или отправить мне электронное письмо.

Настройка развертывания

Теперь давайте начнем более подробно изучать возможности развертывания Codeship.

Вы выбираете, что Codeship делает с вашим кодом после прохождения тестов. Например, возможно, вы обновляете свой промежуточный сервер для дальнейших тестов или, возможно, выносите все на свои производственные серверы. Codeship позволяет вам определять сложные конвейеры для тестирования и развертывания.

Codeship Example of Deployment Pipelines

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

Журнал сборки проекта

Я предполагаю, что вы следовали нашему первому учебнику, подписались и начали использовать Codeship.

Если вы заглянете в журнал сборки вашего проекта, вы увидите список последних результатов. Нажмите зеленую кнопку Success.

Codeship Get a Green Build Project Build Logs

Появится информация о результатах сборки и меню боковой панели «Параметры сборки».

Codeship Build Results and Build Options

Вот меню Параметры сборки. Нажмите Проверить настройки теста:

Codeship Build options menu

Здесь вы увидите меню боковой панели Настройки проекта слева, где мы найдем нужные нам варианты развертывания.

Codeship General Settings

Вот подробный обзор меню Настройки проекта. Нажмите Развертывание:

Codeship Project Settings Menu

Настройка развертывания

Codeship обеспечивает готовую интеграцию развертывания со многими популярными хостинговыми решениями, включая Google AppEngine, Amazon Web Services CodeDeploy, Heroku, Engine Yard, Nodejitsu и другие. Codeship является официальным партнером AWS и CodeDeploy.

Codeship Configure Your Deployments

Codeship предлагает несколько учебных пособий для различных платформ и широкий спектр документации для вариантов непрерывного развертывания.

Codeship Continuous Deployment Documentation

Я собираюсь провести вас через два примера. Во-первых, я буду развертывать мой PHP-код на Yii2 Framework для AWS с помощью CodeDeploy. Затем я создам проект Ruby Discourse Project, используя ParallelCI, чтобы ускорить время сборки.

Использование Amazon CodeDeploy с Codeship

В первой части я использовал Codeship для запуска автоматических тестов на PHP-платформе Yii2 Framework. Теперь давайте настроим Codeship для развертывания моего проекта на сервере AWS с использованием AWS CodeDeploy.

Сначала давайте пройдемся через Amazon AWS CodeDeploy:

Я предоставлю основное прохождение AWS CodeDeploy, но моя цель - не детализировать его здесь. Вместо этого я сосредоточен на том, чтобы помочь вам настроить соединение Codeship с AWS CodeDeploy.

Во-первых, зайдите на страницу AWS CodeDeploy Getting Started и выберите Custom Deployment:

Codeship AWS Code Deploy Application Wizard

Затем создайте новое приложение. Я уже создал экземпляр EC2 и пометил его CodeDeployDemo.

Codeship AWS Code Deploy Create New Application

Выберите конфигурацию развертывания. Я уже создал роль службы:

Codeship AWS Code Deploy Deployment Configuration

Теперь, когда ваше приложение AWS CodeDeploy настроено, вам нужно настроить группу развертывания для своего экземпляра.

Codeship AWS Code Deployment Group

Это будет отличаться в зависимости от вашего приложения и местоположения бакета S3:

Codeship AWS Code Deploy How to Deploy Your Application

Затем вернемся к Codeship. Войдите в свой проект и нажмите Настройки проекта в правом верхнем углу. Затем нажмите Развертывание:

Codeship Project Settings for Deployment

Затем нажмите кнопку CodeDeploy:

Codeship Configure Your Deployment

Заполните параметры свойств развертывания кода AWS с помощью ваших ключей доступа к Amazon , секретного ключа и группы имен приложений и развертывания CodeDeploy. Укажите свой S3 бакет:

Codeship AWS Code Deploy Deployment

Теперь вы можете просмотреть документацию 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.

Codeship Add your SCM Project - Discourse

Нажмите Окружение и настройте переменные среды для нашего проекта Rails:

Codeship Configure your environment variables

Затем мы будем использовать следующие команды для настройки инструкций сборки:

Codeship Project Build Setup Commands

Затем я отправлю пример в файл ReadMe, чтобы начать сборку Codeship.

Codeship Push and Build Discourse

Вот результаты успешной сборки:

Codeship Push and Build Discourse Success

Тестирование с помощью единого пайплайна

Теперь давайте добавим следующие тесты в один конвейер.

Codeship Push and Build Discourse Single Pipeline

В следующий раз, когда мы сделаем комит, Codeship соберет код и запустит тест. Одному пайплайну требуется около десяти минут.

Codeship Single Pipeline Finishes in Ten Minutes

Теперь перейдем к ParallelCI.

Тестирование с использованием нескольких пайплайнов

В ParallelCI каждый проект имеет несколько тестовых конвейеров, которые запускаются параллельно. Каждый из этих конвейеров работает на виртуальной машине независимо от другой. Сначала Codeship запускает ваши команды настройки, а затем любые произвольные тестовые команды, которые вы определили для этого конкретного конвейера через интерфейс. Чтобы облегчить различение различных конвейеров, вы можете предоставить осмысленное имя для каждого из них.

Вот пошаговое видео-руководство с другой базой кода о том, как мы настраиваем ParallelCI для ускорения этих тестов:

Для моего первого тестового конвейера я буду запускать следующие тесты:

Codeship Two Pipelines - Configure the first

Для моего второго тестового конвейера я запустил следующее:

Codeship Two Pipelines - Configure the second

Затем я запушу новый комит, и вы увидите ParallelCI, работающий ниже, с отдельным логом состояния каждого конвейера:

Codeship Two Pipelines Build and Test Running

Через 7 минут 26 секунд построение двух пайплайнов завершается:

Это примерная экономия времени почти на 30%. Это хороший пример того, как ParallelCI Codeship может сэкономить время вашей команды при запуске более сложных сборочных и тестовых последовательностей. Также имейте в виду, что Codeship допускает до 20 параллельных тестовых конвейеров - коэффициент усиления здесь может быть экспоненциальным.

Имейте в виду, если у вас настроено развертывание для определенной ветки, и каждый тестовый конвейер сообщает об успешном запуске, будет запущен конвейер развертывания. Вам не нужно ничего менять, если вы используете одно из интегрированных развертываний Codeship, например Heroku, AWS CodeDeploy, Google App Engine и т.д.

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

Еще одна вещь, о которой стоит упомянуть, API-интерфейс Codeship.

API-интерфейс Codeship

Если вы хотите еще больше контролировать Codeship для полного сценария и автоматизации ваших непрерывных сервисов доставки, Codeship предлагает API:

Codeship API Documentation Script and Automate the Codeship

Вы можете настроить сборки в своем проекте и при необходимости перезапустить их.

В заключение

Я хотел бы обобщить то, что мы узнали о 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 +, чтобы найти другие учебники, которые я написал.

Ссылки по теме

SaveSaveSaveSave
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.