Как настроить конвейеры непрерывной интеграции с Drone в Ubuntu 16.04

Вступление

Drone - это платформа непрерывной интеграции и доставки, написанная на Go. Благодаря интеграции со многими популярными службами контроля версий вы можете использовать его для автоматического создания, тестирования и доставки программного обеспечения при каждом обновлении кода.

В этом уроке мы разберем пример репозитория GitHub и используем Drone для сборки и тестирования проекта.

Предпосылки

Перед началом этого учебного курса вам необходимо установить, настроить Drone и связать его с вашей учетной записью GitHub. Следующие учебники помогут вам там:

По завершении вы должны войти в Drone на экране, подобном следующему:

Drone default logged in screen

Это приборная панель Drone. Это показывает, что мы вошли в систему, но в Drone не настроены репозитории. Давайте создадим хранилище сейчас.

Форкинг репозитория примеров

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

https://github.com/do-community/hello_hapi

hello_hapi repository page

Нажмите кнопкуFork в правом верхнем углу, чтобы скопировать этот репозиторий в свою учетную запись. Если у вас есть доступ к нескольким организациям GitHub, вас могут попросить выбрать, куда направлять репозиторий. Выберите свою обычную учетную запись. Через несколько секунд вы попадете в репозиторийhello_hapi, который был скопирован в вашу учетную запись.

Далее мы рассмотрим, как мы настраиваем Drone для сборки и тестирования нашего кода.

Понимание файла .drone.yml

Drone ищет файл конфигурации с именем.drone.yml в вашем репозитории, чтобы определить, как он должен обрабатывать ваш код. Этот файл уже включен в репозиторий, который мы только что разложили:

drone.yml
pipeline:
  build:
    image: node:latest
    commands: npm install
  test:
    image: node:latest
    commands: npm run test

Это файлYAML, который определяетpipeline. Конвейер представляет собой непрерывный процесс интеграции, который выполняется в несколько этапов, один за другим. В нашем случае мы имеем двухступенчатый конвейер.

Первый шаг, называемыйbuild, будет использовать образ Dockernode:latest для запускаnpm install в нашем репозитории. Это загрузит и установит все библиотеки, необходимые для запуска тестов.

Следующий шаг называетсяtest. Он использует тот же образ Docker для запуска нашего набора тестов. Часто вы выполняете обе командыbuild иtest за один шаг, но мы разделили их, чтобы лучше продемонстрировать конвейеры.

Обратите внимание, что все шаги в конвейере совместно используют одно и то же рабочее пространство, поэтому файлы, созданные на первом шаге, будут доступны на последующих шагах. У Drone есть еще много опций, которые можно настроить с помощью.drone.yml, о которых вы можете прочитать вDrone documentation. Некоторые из этих функций включают в себя:

  • Матричные сборки, где вы собираете и тестируете несколько версий библиотеки или среды выполнения для проверки совместимости

  • Уведомления через электронную почту или службы обмена сообщениями

  • Публикация продуктов сборки в npm, реестрах контейнеров или хостах статических сайтов

Далее мы скажем Drone следить за изменениями в нашем репозитории, а затем запустить сборку.

Запуск прогона непрерывной интеграции

Войдите в Drone, если вы еще этого не сделали. Домашняя страница будет выглядеть довольно разреженно, пока мы ее не настроим. Пустая боковая панель предлагает намActivate your repositories to get started.

Drone default logged in screen

Щелкните ссылкуActivate, чтобы отобразить список всех ваших репозиториев GitHub:

Drone repository listing

Найдите репоhello_hapi и щелкните серый переключатель в правом столбце, чтобы активировать его. Переключатель перевернется и станет зеленым. За кулисами Drone будет использовать API GitHub, чтобы убедиться, что он получает уведомления при каждом изменении нашего кода.

Вернитесь на панель управления домашней страницы, щелкнув логотип Drone в верхнем левом углу экрана или воспользовавшись меню в верхнем правом углу рядом со значком пользователя:

dashboard link screenshot

Теперь на панели инструментов будет наш новый репозиторий, указанный в левом столбце. Пока нет информации о состоянии, потому что мы не запускали сборку:

dashboard with hello_hapi and no build info

Щелкните имя репозиторияhello_hapi, чтобы перейти к подробному представлению репозитория. Он будет иметь несколько вкладок, где мы можем обновлять настройки, добавлять секреты, такие как токены и пароли, и получать встраиваемые значки состояния сборки. По умолчанию мы находимся на вкладкеBuilds, и сборок еще не указан.

hello_hapi repo details with no builds

Давайте запустим сборку сейчас.

Оставьте страницу Drone открытой и перейдите в репозиторий GitHubhello_hapi на другой вкладке или в другом окне. Мы собираемся добавить файл в проект для запуска сборки. Подойдет любой файл. Нажмите кнопкуCreate new file вверх в верхней части списка файлов в вашем репо:

Create file button on GitHub screenshot

Выберите любое имя файла. В этом случае мы выбралиtrigger-file. Введите любой контент:

Filename and content creation on GitHub screenshot

Затем прокрутите редактор содержимого вниз и нажмите кнопкуCommit new file:

Commit new file on GitHub screenshot

После фиксации GitHub уведомит нашу установку Drone об изменении. Дрон начнет новую сборку. Вернитесь в окно браузера Drone. Интерфейс должен обновляться довольно быстро, а вращающаяся стрелка будет указывать, что происходит сборка.

Drone dashboard with build in progress

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

Просмотр результатов CI / CD

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

Drone build details

Вы можете нажать стрелки раскрытия для каждого шага сборки, чтобы показать больше деталей. Вот результат нашего шагаtest:

Drone build step details

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

Обратите внимание, что есть этапclone, который мы не определили в нашем файле.drone.yml. Это всегда присутствует и дает подробную информацию о том, как Drone получил ваш исходный код перед сборкой.

Заключение

В этом руководстве мы создали демонстрационный репозиторий, изучили файл конфигурации.drone.yml, а также создали и протестировали наш репозиторий с помощью Drone.

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

Related