Кто такой Трэвис? Ну… это больше похоже на Трэвиса. TravisCI называют «службой непрерывной интеграции, используемой для создания и тестирования проектов, размещенных на GitHub». TravisCI можно использовать в репозиториях, размещенных на GitHub, для выполнения различных тестов и операций с вашим кодом. Travis можно настроить для выполнения линтинга, выполнения созданных вами тестов и даже запуска вашего приложения, чтобы убедиться, что все в порядке и работает нормально. Обладая этой информацией, мы, разработчики, можем быть уверены в том, что все, что добавляется в наши организации на GitHub, будет работать правильно и не «нарушит сборку».

Итак, как вообще работает TravisCI? Что ж, я расскажу вам об основах настройки Трэвиса в репозитории, а затем дам краткий обзор, дополнительную информацию и места для поиска дополнительной информации. Итак, для начала перейдите на https://travis-ci.org/ и создайте там учетную запись, используя свои учетные данные GitHub. Как только вы это сделаете, добавьте желаемые организации и локальную учетную запись в TravisCI, используя Travis для непрерывной интеграции. Теперь вы можете выбрать конкретный репозиторий, над которым вы хотите, чтобы Трэвис работал. Если у вас есть какие-либо переменные среды, которые потребуются для тестирования и т. Д. Вашего кода, их можно добавить на веб-сайт TravisCI для этого репозитория, а также с помощью графического интерфейса. После того, как вы все это настроили (я предполагал, что у вас уже есть репо на GitHub), перейдите к этому репо на вашем компьютере.

Теперь, когда вы все настроены на веб-сайт TravisCI, вам нужно добавить файл, чтобы сообщить Трэвису, над чем вы хотите работать. Для этого создайте файл .travis.yml в корне вашего репо. В этом файле я предлагаю начать с чего-то вроде этого (код ниже), а затем настроить, используя документацию TravisCI, которая, как я считаю, очень тщательна и в целом просто превосходна.

language: node_js
node_js:
  - '7'
before_script:
  - psql -c 'create database travis-ci-test;' -U postgres
before_install: if [[ `npm -v` != 4* ]]; then npm i -g npm@4; fi
cache:
  directories:
    -node_modules
sudo: false

Немного о приведенном выше коде: я использую его в текущем проекте, который имеет базу данных PostgreSQL и использует Node версии 7.10.0 / NPM версии 4.2.0. Из приведенного выше файла я думаю, что большую часть этого довольно легко пройти, пока вы не дойдете до этого before_script. Эта строка просто настраивает мою базу данных (вы, вероятно, захотите заменить имя своей базы данных на «travis-ci-test») на PostgreSQL, чтобы Трэвис мог имитировать мою базу данных. Этот шаг выполняется до того, как мой проект будет построен, поэтому все, что нужно сделать перед этим в вашем проекте, добавьте сюда. Затем строка before_install проверяет версию узла и NVM, если «движок» не указан в вашем файле package.json (я был в порядке, так как указал свой). В разделе before_install вы можете указать дополнительные требования для проекта помимо node_modules (обычно специфичных для среды, например, Ubuntu). В противном случае эта строка сообщает Трэвису, какие версии нужны для запуска моего кода. Наконец, строка sudo: false просто говорит Трэвису использовать последнюю версию Ubuntu Trusty 14.04 вместо предыдущих версий.

Итак, чтобы подвести итог, Travis поддерживает множество различных типов «крючков» жизненного цикла сборки. Вот список некоторых из наиболее часто используемых, которые поддерживает Трэвис:

  • before_script Перед запуском скрипта сборки
  • скрипт Как запустить скрипт, если у вас есть особые нужды
  • after_script После запуска скрипта сборки
  • before_install Перед установкой зависимостей (используется для конкретных пакетов ОС и посторонних нужд)
  • install Укажите способ установки зависимостей (может иметь значение в зависимости от того, как вы связали свое приложение - Gulp, Grunt, Webpack и т. д.)
  • before_cache Используется для очистки кеша
  • after_success Дополнительные вещи, которые нужно сделать после успешного запуска Трэвисом
  • after_failure Дополнительные действия после неудачного пробного запуска Трэвисом
  • before_deploy Действия, выполняемые перед развертыванием
  • развернуть Укажите информацию о том, как развернуть ваш код (Heroku, Engine Yard и т. д.)
  • after_deploy Действия, выполняемые после завершения развертывания

Как вы, наверное, догадались, TravisCI может автоматизировать ваш процесс от начала до конца, если вы этого хотите. Travis поддерживает сборки с Docker, задачами Cron, всевозможными сторонними пакетами, и этот список можно продолжать и продолжать. Небольшое количество времени, потраченное на настройку Travis (особенно в крупных проектах с несколькими участниками), поможет сохранить безворсовую, работоспособную и поддерживаемую кодовую базу. С хорошим линтером, используемым на стороне разработки, Трэвис становится все лучше. Добавьте строку, подобную приведенной ниже, в свой package.json, и Трэвис запустит ваши тесты и проверит линты перед тем, как передать / отклонить ваш пул-реквест в GitHub:

"test": "mocha run test/test-server.js",
"pretest": "npm run lint",
"lint": "eslint . --ext .json .jsx"

Теперь Трэвис выполнит предварительное тестирование, затем тестирование и многое другое, прежде чем сообщать вам об успехе или неудаче. На этом этапе вы можете увидеть свой пул-реквест в GitHub и определить, прошел он или не прошел. Если это не удалось, конечно, вам следует вернуться и исправить код, прежде чем его нужно будет вытащить.

Подводя итог, можно сказать, что TravisCI - чрезвычайно мощный инструмент, который может гарантировать, что ваши запросы на вытягивание выполняются правильно и таким образом, чтобы ваша сборка работала. Кроме того, его можно использовать для автоматизации сборки, развертывания, установки, загрузки образов и многого другого. Надеюсь, вам понравилось чтение, и оставляйте комментарии ниже. Я с нетерпением жду ваших ответов и буду продолжать делиться любой другой интересной информацией, с которой я столкнусь, по мере того, как я буду глубже изучать и использовать больше того, что может предложить TravisCI. Еще раз спасибо, и вот эти ссылки, как и было обещано!