Связаться по Skype: vkarabedyants
Позвонить Написать
+7 (499) 404-28-83

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Система непрерывной интеграции Concourse CI

Системы непрерывной интеграции экономят кучу времени, но сами они тоже требуют изучения, что не всегда подходит для небольших проектов. Concourse CI очень выручает в этом случае.

Наша компания предоставляет услуги по обеспечению непрерывной интеграции проектов, различными средствами, услуги девопс, обращайтесь office@system-admins.ru

Установка системы непрерывной интеграции

Развернуть Concourse CI можно несколькими способами. Проект предоставляет бинарники для Linux, Mac OSX и Windows, готовые образы Docker и Vagrant. Последний вариант универсальный и позволяет поднять нужный сервис в считанные минуты, но, учитывая, что будут запущены две VM (одна для СУБД), потребует чуть больше ресурсов и нужен компьютер минимум с 8 ОЗУ. Поддерживается работа нескольких экземпляров в кластере, использующих одну базу.
Самый удобный способ быстро поднять сервер – это Docker. Создаем файл docker-compose.yml:

Сгенерируем беспарольные ключи, необходимые для авторизации:

Для доступа нужно установить переменную CONCOURSE_EXTERNAL_URL, указав IP внешнего сетевого интерфейса. Задать localhost нельзя, хотя по этому адресу он также будет доступен.

Запускаем:

Это все. После перехода на страницу будет предложено скачать утилиту Fly CLI. Сохраняем, делаем ее исполняемой и копируем в каталог, видный в переменной $PATH.

Первое задание

Команд у утилиты предостаточно, их все можно увидеть по ключу —help. Для выполнения команд необходимо зарегистрироваться, указав логин и парорль, прописанный в docker-compose.yml в environment:

Созданный токен сохраняется в файле ~/.flyrc.
Параметры можно задавать как непосредственно в командной строке, так и в YAML-конфигурационном файле. Создадим задание с одной простой задачей – запуск Dockerконтейнера.

Параметры, в общем, понятны, запускаем контейнер ubuntu, передав ему параметр. Теперь можем создать тестовый pipeline.

Подтверждаем по запросу применение конфигурации (см. рис. 1).

непрерывная интеграция CI
При первом запуске во избежание проблем контейнеры всегда находятся в состоянии паузы, для его активации необходимо его запустить через веб-интерфейс или при помощи параметра unpause-pipeline:

Переходим в веб-интерфейс и выбираем pipeline. После загрузки контейнера в браузере будет выведено сообщение «Hello World» (см. рис. 2).

continuous integration CI

Выбрав задание, можем просмотреть журнал выполнения. Статус задания подсвечивается цветом. Зеленый значит выполнено, желтый – в процессе выполнения, красный – завершено с ошибкой или остановлено (см. рис. 3).

CI непрерывная интеграция
Команда:

покажет список контейнеров и привязку их к заданиям. Если задание нужно повторить (например, контейнер изменен), достаточно нажать на кнопку «+» в браузере.

Настройка триггеров и ресурсов

Чтобы Concourse CI выполнял все действия автоматически, нужно подключить ресурсы – репозитории Git, Docker Hub, задать время и т.д. Полный список официальных и неофициальных ресурсов доступен на сайте https://concourse.ci/resource-types.html. Добавим в начало файла ресурс, который будет просто активироваться каждую минуту.

И в секцию plan триггер:

Запускаем задачу повторно.

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

Если перейти на http://192.168.2.100:8080/teams/main/pipelines/hello-world, то увидим, что появился новый элемент, обозначающий ресурс (см. рис. 4), а задача будет выполняться каждую минуту.

автоматический деплой
Теперь научимся отслеживать изменения Docker-файла, расположенного в Git. Создаем файл, описывающий нужный ресурс:

Выполняем:

Схема такая (см. рис. 5).

автоматизация задач

Для теста внесем какие-то правки в репозиторий и увидим, что задание выполняется каждый раз при обнаружении изменений. Осталось научить Concourse CI самостоятельно собирать образы. Для этого добавим в секцию plan задание на сборку образа:

И новый ресурс с типом docker-imag в конец файла:

Запускаем задание (см. рис. 6) и можем наблюдать в интерфейсе за процессом сборки (см. рис. 7).

Схема задания по сборке Docker-образа из GitСборка образа
При использовании частного репозитория нужно указать  логин и пароль для входа или ключ:

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

Источник журнал «Системный администратор» март 2017

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.