Travis CI
Travis CI — это облачная распределённая система непрерывной интеграции (Continuous Integration, CI), используемая для автоматизации сборки, тестирования и развёртывания программного обеспечения. Сервис предназначен для интеграции с системами управления версиями, преимущественно с GitHub, и позволяет разработчикам автоматически запускать скрипты при каждом изменении кода в репозитории.
История
Travis CI был основан в 2011 году Берлином Шефером, Джошем Калдером и другими разработчиками. Изначально проект создавался как открытое программное обеспечение для сообщества Ruby on Rails, но быстро расширил поддержку на другие языки программирования. Первая публичная версия сервиса была запущена в 2011 году.
В 2012 году компания Travis CI GmbH получила финансирование от венчурных фондов и начала коммерциализацию продукта. В 2013 году был запущен платный сервис Travis CI Pro, предназначенный для частных репозиториев. В 2018 году компания объявила о переходе на новую платформу, основанную на контейнеризации и облачных вычислениях.
В 2019 году Travis CI был приобретён компанией Idera, Inc., владеющей рядом инструментов для разработки программного обеспечения. После приобретения сервис продолжил работу, но столкнулся с рядом изменений в политике ценообразования и функциональности.
Архитектура и принцип работы
Travis CI работает по модели «клиент-сервер». Серверная часть обрабатывает запросы от систем управления версиями, запускает сборки на виртуальных машинах или в контейнерах и передаёт результаты обратно. Клиентская часть представляет собой веб-интерфейс и API.
Основные компоненты
- Веб-интерфейс — панель управления, где разработчики могут просматривать статус сборок, логи и настройки.
- API — программный интерфейс для интеграции с другими инструментами и автоматизации.
- Агенты сборки — виртуальные машины (на базе Ubuntu, macOS, Windows) или контейнеры Docker, в которых выполняются скрипты сборки.
- Очередь заданий — система управления задачами, распределяющая сборки по доступным агентам.
Процесс работы
- Разработчик отправляет изменения в репозиторий на GitHub.
- GitHub отправляет веб-хук (webhook) на сервер Travis CI.
- Сервер проверяет наличие конфигурационного файла
.travis.ymlв корне репозитория. - Если файл найден, сервер запускает сборку на одном из агентов.
- Выполняются команды, описанные в конфигурационном файле (установка зависимостей, запуск тестов, сборка артефактов).
- Результаты сборки (успех/неудача, логи) отправляются обратно в GitHub и отображаются в веб-интерфейсе Travis CI.
Конфигурация
Настройка Travis CI осуществляется через файл .travis.yml, который размещается в корне репозитория. Этот файл содержит инструкции для сборки, тестирования и развёртывания.
Пример базовой конфигурации
```yaml language: python python:
- "3.8"
- "3.9"
install:
- pip install -r requirements.txt
script:
```
Основные параметры
- language — язык программирования проекта (например,
python,node_js,ruby,java). - os — операционная система для сборки (
linux,osx,windows). - dist — дистрибутив Linux (например,
bionic,focal). - before_install — команды, выполняемые перед установкой зависимостей.
- install — команды для установки зависимостей.
- script — команды для запуска тестов или сборки.
- after_success — команды, выполняемые после успешной сборки.
- deploy — настройки для автоматического развёртывания.
Поддерживаемые языки и платформы
Travis CI поддерживает более 30 языков программирования, включая:
Сервис предоставляет виртуальные машины на базе Ubuntu (LTS-версии), macOS (для iOS-разработки) и Windows Server. Также поддерживается запуск сборок в контейнерах Docker.
Интеграция с системами управления версиями
Travis CI изначально разрабатывался для интеграции с GitHub. Позднее была добавлена поддержка Bitbucket, GitLab и Assembla. Интеграция осуществляется через веб-хуки и OAuth-аутентификацию.
GitHub
- Travis CI автоматически синхронизируется с репозиториями GitHub.
- Для каждого коммита или пул-реквеста может быть запущена сборка.
- Статус сборки отображается в интерфейсе GitHub (зелёная галочка — успех, красный крест — неудача).
Bitbucket и GitLab
- Поддерживаются через API и веб-хуки.
- Требуют ручной настройки в настройках репозитория.
Типы сборок
Travis CI поддерживает несколько типов сборок:
- Сборка по коммиту — запускается при каждом изменении в репозитории.
- Сборка по пул-реквесту — запускается для проверки изменений перед слиянием.
- Периодическая сборка — запускается по расписанию (например, ежедневно).
- Сборка по тегу — запускается при создании тега в репозитории.
Платные и бесплатные тарифы
Travis CI предлагает несколько тарифных планов:
- Бесплатный — для открытых репозиториев (public). Включает ограниченное количество параллельных сборок и время выполнения.
- Travis CI Pro — для частных репозиториев. Предоставляет больше параллельных сборок, приоритетную поддержку и дополнительные функции.
- Travis CI Enterprise — локальная версия сервиса, развёртываемая на собственных серверах организации.
С 2021 года компания Idera изменила условия бесплатного тарифа, ограничив количество бесплатных сборок для частных репозиториев. Для открытых проектов бесплатный тариф остался доступен.
Преимущества и недостатки
Преимущества
- Простота настройки — минимальная конфигурация через файл
.travis.yml. - Интеграция с GitHub — автоматическая синхронизация и отображение статуса сборок.
- Поддержка множества языков — широкая совместимость с различными технологиями.
- Облачная инфраструктура — не требует установки и обслуживания серверов.
- Открытый исходный код — базовая версия сервиса доступна для самостоятельного развёртывания.
Недостатки
- Ограниченная производительность — бесплатные сборки могут выполняться медленно.
- Зависимость от облачной инфраструктуры — при сбоях сервиса сборки недоступны.
- Изменения в политике ценообразования — после приобретения Idera условия стали менее выгодными для небольших команд.
- Ограниченная поддержка Windows — сборки на Windows доступны только в платных тарифах.
Конкуренты
На рынке систем непрерывной интеграции Travis CI конкурирует с такими сервисами, как:
- Jenkins — открытая система с возможностью локального развёртывания.
- GitLab CI — встроенная система в GitLab, поддерживающая как облачные, так и локальные сборки.
- CircleCI — облачный сервис с высокой производительностью и гибкой настройкой.
- GitHub Actions — встроенная система CI/CD в GitHub, доступная для всех репозиториев.
- Azure DevOps — облачная платформа Microsoft с поддержкой CI/CD.
Применение
Travis CI используется в различных сценариях разработки:
- Автоматизация тестирования — запуск модульных, интеграционных и функциональных тестов при каждом изменении кода.
- Сборка и публикация артефактов — создание дистрибутивов, пакетов и образов Docker.
- Развёртывание — автоматическая выкладка кода на серверы, в облачные платформы или в магазины приложений.
- Проверка кода — запуск линтеров, статических анализаторов и проверок стиля.
- Непрерывная интеграция — обеспечение постоянной готовности кода к слиянию и развёртыванию.
Интересные факты
- Название «Travis» происходит от имени персонажа фильма «Бегущий по лезвию» — Трэвиса (Travis) — и не имеет отношения к одноимённому городу в Техасе.
- Исходный код сервера Travis CI был открыт под лицензией MIT, но после приобретения Idera разработка открытой версии была приостановлена.
- В 2020 году Travis CI был признан одним из самых популярных сервисов CI/CD среди проектов с открытым исходным кодом на GitHub.
- В 2021 году сервис столкнулся с критикой из-за изменения тарифов и ограничения бесплатного доступа для частных репозиториев.
Источники
- Официальная документация Travis CI
- Статья «Travis CI: история и развитие» на портале Habr
- Материалы конференции DevOpsDays 2019
- Документация GitHub по интеграции с Travis CI
- Статья «Continuous Integration with Travis CI» в журнале «Linux Magazine»
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →