Skip to content

📄 Travis CI

1. Общее описание

Travis CI — это сервис непрерывной интеграции (Continuous Integration), который автоматически запускает тесты и сборку при пуше кода в репозиторий. Поддерживает GitHub как основную платформу.

Основные особенности:

  • Интеграция с GitHub.
  • Автоматический запуск билдов на основе .travis.yml.
  • Поддержка множества языков программирования.
  • Бесплатный тарифный план для open-source проектов.
  • Возможность использования собственных (custom) виртуальных машин или Docker-образов.

2. Архитектура Travis CI

Компонент Описание
GitHub Repository Источник кода, из которого запускается билд.
.travis.yml YAML-файл в корне проекта, определяющий этапы билда.
Build Environment Виртуальная машина или контейнер, где выполняются команды.
Job Отдельное выполнение одного этапа билда.
Build Группа связанных job'ов, запущенных вместе.
Matrix Build Запуск нескольких конфигураций билдов одновременно (например, разные версии Python).

3. Основные понятия

Термин Определение
Build Процесс выполнения всех указанных шагов в .travis.yml.
Job Отдельная часть билда, например, одна комбинация среды в матрице.
Stage Логическая группа шагов (например: install, test, deploy).
Environment Variables Переменные окружения, доступные во время билда.
Build Matrix Множество билдов, созданных на основе разных параметров.
Cache Кэширование зависимостей между билдами для ускорения.
Services Вспомогательные сервисы, которые можно запустить (PostgreSQL, MySQL, Redis и др.).

4. Настройка Travis CI

4.1 Активация проекта

  1. Зайти на https://travis-ci.com (или https://travis-ci.org для open-source).
  2. Авторизоваться через GitHub.
  3. Включить нужный репозиторий в списке проектов.

4.2 Файл .travis.yml

Это главный файл конфигурации Travis CI. Пример:

language: python
python:
  - "3.8"
  - "3.9"
install:
  - pip install -r requirements.txt
script:
  - python -m pytest

5. Примеры конфигураций

Node.js проект

language: node_js
node_js:
  - "14"
  - "16"
script:
  - npm test

Django проект

language: python
python:
  - "3.9"
env:
  - DATABASE_URL=postgres://user:password@localhost/mydb
install:
  - pip install -r requirements.txt
  - pip install pytest
script:
  - python manage.py test

Матричная сборка

language: ruby
rvm:
  - 2.7
  - 3.0
env:
  matrix:
    - DB=mysql
    - DB=postgres
script:
  - bundle exec rspec

6. Уведомления

Travis позволяет отправлять уведомления о статусе билда:

notifications:
  email:
    - your@email.com
  slack:
    rooms:
      secure: "your_slack_token_here"

Также поддерживаются: - IRC - Campfire - Webhooks - Telegram (через сторонние интеграции)


7. Работа с приватными репозиториями

Для приватных репозиториев: - Нужно использовать travis-ci.com (не .org). - Для шифрования данных используется утилита travis.

Пример установки CLI:

gem install travis

Шифрование переменных:

travis encrypt MY_SECRET=password --add env.global

8. Ограничения

Платформа Бесплатный тариф (open source) Платный тариф
travis-ci.org (устарел)
travis-ci.com ❌ (требуется миграция)
macOS / iOS билды
Windows билды ✅ (ограничено)
Время билда до 50 минут зависит от тарифа
Параллельные билды ограничено да

9. Best Practices

  • Храните .travis.yml в репозитории.
  • Используйте кэширование (cache:) для ускорения установки зависимостей.
  • Разделяйте задачи на stages.
  • Шифруйте чувствительные данные через travis encrypt.
  • Используйте before_install, install, before_script, script логично.
  • Следите за временем выполнения билдов.

10. Полезные ссылки