Эта статья была спонсирована Codeship . Спасибо за поддержку спонсоров, которые делают возможным использование SitePoint.
Ахой, приятель! Похоже, вы один из нас, навигатор по красивым и коварным морям разработки программного обеспечения. Мы из флота SitePoint всегда рады встретиться с другим моряком программного обеспечения. Сегодня у нас есть особое удовольствие для наших попутчиков из соленой глубины. Морские жители в Codeship (Codeshippers!) Создали новый способ навигации по водам Непрерывной Интеграции и Доставки. Тот, который может быть столь же значительным, как любая разработка, так как специализированные юнит-тестирующие парки. Он называется ParallelCI, и он сделает прогулку на ваших кораблях короче и быстрее.
Маленькая история программного обеспечения
Существует большая вероятность того, что вы используете какую-то платформу непрерывной интеграции и доставки. Codeship — это «Непрерывная доставка — просто». Если вы не знаете, что означает «Непрерывная интеграция и доставка», SitePoint и Codeship вам помогут:
- Мы писали о непрерывной интеграции и непрерывной доставке .
- Мы также рассмотрели непрерывное развертывание, где вы можете автоматически развертывать успешные сборки в своей производственной среде. Codeship поддерживает многие предложения PaaS, включая Heroku и AWS.
- Codeshipper Мануэль Вайс дает ускоренный курс непрерывной доставки.
Море программного обеспечения постоянно меняется. Такие платформы, как Codeship, позволяют вашему флоту приспосабливаться к изменениям погоды. Прочитайте вышеупомянутые свитки (связанные статьи), чтобы узнать, как Codeship может превратить вашу изможденную команду в мощную армаду. Затем вернитесь сюда, чтобы прочитать об их последних навигационных предложениях.
ParallelCI: покройте территорию тестирования быстрее
Возможно выполнение ваших путешествий (сборок) параллельно. Существуют легенды о том, что предыдущие исследователи отправляли несколько кораблей в разных направлениях, чтобы охватить большую часть территории и найти оптимальный маршрут как можно быстрее. До сегодняшнего дня это было очень сложное мероприятие. Кто-то должен будет создать каждый курс (ВМ), повторяя трудную настройку и подготовку, и убедиться, что курсы не охватывают одну и ту же территорию. В большинстве случаев установка была слишком сложной, а курс — слишком дорогим, оставляя вас между молотом и наковальней. Таким образом, один корабль используется для перемещения по всем территориям.
С ParallelCI, новым предложением от Codeship, теперь тривиально создать новый курс, называемый «конвейером». Каждый конвейер получает одну и ту же настройку, но затем может пройти свой собственный курс (выполнить свои собственные команды). Теперь вы можете легко разбить территорию тестирования на более мелкие маршруты, позволяя каждому трубопроводу проходить через меньшее количество воды. В конечном счете, ваш флот (программное обеспечение) прибывает в пункт назначения (желанные земли Deploymentistan) намного быстрее.
Подготовка к путешествиям
Зарегистрируйтесь в Codeship
Так как мы опытные навигаторы, мы собираемся зарегистрироваться через Github. Если ваши корабли находятся в порту в другом месте, вы можете зарегистрироваться с помощью Bitbucket или обычной электронной почты. Github попросит вас разрешить Codeship доступ к вашим портам (репозиториям), а затем приветствует вас соответствующим морским приветствием:
Выберите флот
Нажмите на гигантскую зеленую кнопку, чтобы создать свой первый проект. Капитан Мо присоединяется к вашей команде, чтобы помочь подготовить вас к вашему первому путешествию.
Нажмите на порт (концентратор репозитория), к которому пристыкован ваш флот, в данном случае, Octocat (есть легенда, рассказывающая о Octocat как о богине программных портов):
Будет отображен список ваших флотов (хранилищ).
В нашем примере сегодня у меня есть только один флот под названием Discourse. Discourse — это большой флот с открытым исходным кодом, работающий на Rails, очень популярном производителе флотов. Я хотел использовать большой парк, в котором много тестов (в Дискурсе более 4000), поэтому я раздвоил их флот.
Подготовьте свой курс
Подпись Mo теперь переносит нас в основную навигационную зону нашей поездки с Codeship:
Перво-наперво, каждый рейс потребует аналогичных команд установки и задач. Как лидер вашей поездки, вы можете ввести любую команду установки, которая вам нужна, и она будет выполняться тампонами Codeship. К счастью для нас, наш флот работает на Rails. У Codeship уже есть общие задачи установки для хорошо известных фреймворков, таких как Rails:
Выбор Rails из выпадающего списка заполняет оба поля: «Modify your Setup Commands» и «Modify your Test Commands». Будучи опытным штурманом, я знаю, что флоту Дискурса нужна немного другая настройка, поэтому я делаю свои модификации:
Настройка является простой частью. Когда мы попадаем в испытательные воды с Codeship и ParallelCI, именно здесь находятся новые территории. Codeship предложил, чтобы мы использовали команду bundle exec rake
bundle exec rake spec
Тем не менее, это займет тот же, старый путь через тестирование. Дискурс — это зрелый флот, который путешествует через определенные испытательные моря, поэтому мы захотим сделать некоторую настраиваемую навигацию, чтобы поездка была максимально короткой.
Вот испытательные воды, по которым путешествует Дискурс:
Некоторые из этих вод огромны, такие как компоненты , контроллеры и модели . Другие моря легко ориентируются, например, помощники и целостность . Мой навигационный опыт говорит мне, что большие моря получат специальный корабль (трубопровод), в то время как некоторые из менее коварных вод могут быть сгруппированы и покрыты одним кораблем.
Кроме того, как старый seadog, я знаю, что мы хотим знать, сколько времени занимает традиционный подход на одном корабле. Таким образом, мы можем сравнить новый путь и количественно оценить наши достижения. Бенчмаркинг является основой успешного мореплавания.
Во время моего пробного запуска в локальных водах для разработки (моя машина для разработки) мне пришлось переворачивать песочные часы 11 раз (то есть 11 минут) во время испытательного рейса. Навигация с использованием Codeship только с одним кораблем, пробные воды проходили чуть более 5 часов.
Теперь время разбить испытательные моря на трубопроводы. Добавить новый конвейер проще, чем поменять колоду. Просто нажмите на ссылку «+ добавить новый трубопровод», и вам будет предложено назвать конвейер:
Щедрые люди в Codeship позволяют нам создавать до 10 конвейеров, но фактическое допустимое количество будет зависеть от уровня вашей учетной записи, когда эта функция выйдет из бета-версии.
Вы можете увидеть корабли, которые я создал здесь:
С нашими навигационными маршрутами все спланировано, пришло время поразить открытое море! Путешествие начинается с изменения флота (хранилища). Простое изменение в README (которое я могу редактировать на Github напрямую) сделает это. Поднять якоря!
Теперь, когда у меня есть новое изменение, на странице проекта (нажмите на название проекта в верхнем левом углу Codeship) показывается новое путешествие:
Здесь, в порту, теперь нужно идти пешком и ждать вдовы. Глядя на рейс, мы видим, что каждый из наших кораблей идет по указанному маршруту. Когда каждый корабль возвращается в порт, вы увидите индикатор на приборной панели сборки. Когда они все вернутся, сборка завершена.
Когда все корабли вернутся в порт (то есть, они зеленые), наше путешествие подходит к концу:
Итак, как мы это сделали? Похоже, мы сократили наше время в море более чем наполовину!
Это невероятно. С помощью тупого инструмента простого назначения конвейера для каждой папки спецификаций мы удвоили скорость, с которой мы можем добраться до места назначения. HIP! HIP! HORRAY! Ром для всех!
Примечание о развертывании
Как только сборка имеет несколько тестовых конвейеров, она использует несколько виртуальных машин (ВМ) для успешного завершения сборки. В результате развертывание не может произойти, пока все конвейеры тестирования не пройдут успешно. В этом случае интерфейс Codeship будет визуально разделять несколько тестовых виртуальных машин и шаг развертывания. Пример поможет:
Как видно на скриншоте, шаг «Развертывание» запускает фактические команды развертывания после завершения всех тестовых команд. Вы можете увидеть больше об этом в этом видео от Codeship .
Вывод
ParallelCI — это простое, но очень полезное дополнение к предложению Codeship. Хотя навигационные маршруты, которые мы использовали сегодня, были немного тупыми (конвейер для каждой папки спецификаций), я уверен, что вы можете придумать более разумные способы разделения ваших тестов. Например, используя что-то наподобие гема parallel_tests и его параметра —only-group
Независимо от того, как вы это делаете, использование ParallelCI сократит время выполнения вашего теста и даст вам больше времени сосредоточиться на функциях доставки. Как сказал судовой магнат Аристотель Онассис: «Мы должны освободиться от надежды, что море когда-нибудь успокоится. Мы должны научиться плавать при сильном ветре ». Codeship поможет вам научиться делать это.
Codeship предлагает 100 сборок в месяц и 5 частных проектов бесплатно, чтобы начать легко и без риска, так что только скалаг откажется от регистрации. Кроме того, моряки в Codeship постоянно обсуждают новые методы навигации в своем блоге. Счастливого пути, мой морской друг. Отправляйтесь в Codeship и попробуйте ParallelCI прямо сейчас .