Введение
Concourse CI – современная масштабируемая система для настройки непрерывной интеграции и для автоматизации конвейеров тестирования с помощью компонуемого декларативного синтаксиса. По сравнению с остальными системами для настройки непрерывной интеграции, команда Concourse вкладывают все усилия, чтобы упростить управление конвейером непрерывной интеграции.
В этом руководстве рассмотрим установку Concourse CI на заранее установленный и настроенный сервер Ubuntu/Debian/CentOS. Настроим базу данных PostgreSQL для использования в качестве серверной части.
Подготовка к установке
Перед установкой Concourse CI, необходимо развернуть сервер Debian/Ubuntu/CentOS и настроить согласно инструкции.
Установка и конфигурирование PostgreSQL
Прежде чем скачивать и устанавливать Concourse CI, необходимо обновить индекс пакетов и установить PostgreSQL.
apt install postgresql postgresq-contrib
После установки PostgreSQL создадим пользователя в базе данных с именем concourse. Создание пользователя необходимо выполнить от имени postgres.
Concourse по умолчанию подключается к базе данных с названием atc. Создадим базу данных с названием atc и присвоим права собственника на пользователя concourse.
После установки и создания базы данных можем скачать и установить Concourse CI.
Скачивание и установка Concourse CI
Скачать файлы можно из официального сайта Concourse либо из GitHub. В нашем случае рассматривается скачивание из GitHub. Необходимо скачать сервер.
tar -xzf concourse*.tgz
Далее загрузим клиент с названием fly в домашнюю директорию и распакуем.
tar -xzf fly*.tgz
Далее необходимо определить права для выполнения запуска файлов распакованным файлам и переместить все файлы в директорию /usr/local/bin.
mv concourse* /usr/local/bin/
mv fly* /usr/local/bin/
Проверим версии fly и concourse с помощью команды:
fly --version
В результате получим версии 7.9.0.
Конфигурирование служб Concourse CI
Необходимо создать директорию concourse в /etc/:
Следующим шагом создадим ключи шифрования для получения доступа к сервису и настроим конфигурацию для Concourse.
Перейдем в директорию /etc/concourse и сгенерируем ключи:
sudo ssh-keygen -t rsa -q -N '' -f /etc/concourse/worker_key
sudo ssh-keygen -t rsa -q -N '' -f /etc/concourse/session_signing_key
Проверим содержимое папки с помощью:
В результате получим список созданных ключей:
-rw-r--r-- 1 spcsteam spcsteam 393 Jan 4 12:18 session_signing_key.pub
-rw------- 1 spcsteam spcsteam 1823 Jan 4 12:18 tsa_host_key
-rw-r--r-- 1 spcsteam spcsteam 393 Jan 4 12:18 tsa_host_key.pub
-rw------- 1 spcsteam spcsteam 1823 Jan 4 12:18 worker_key
-rw-r--r-- 1 spcsteam spcsteam 393 Jan 4 12:18 worker_key.pub
Сделаем копию ключа worker_key.pub, чтобы раздать сотрудникам этот ключ для авторизации.
Создадим конфигурационный файл для запуска WEB UI службы Concourse.
В файле укажем пути для использования ключей и путь до файла для запуска PostgreSQL. А также укажем логин, пароль, адрес сервера и порт.
CONCOURSE_TSA_HOST_KEY=/etc/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/etc/concourse/authorized_worker_keys
CONCOURSE_POSTGRES_SOCKET=/var/run/postgresql
CONCOURSE_BASIC_AUTH_USERNAME=serverspace
CONCOURSE_BASIC_AUTH_PASSWORD=p@ssw0rd
CONCOURSE_EXTERNAL_URL=http://server_IP:8080
Сохраним файл и выполним выход.
Создадим конфигурационный файл для серверной части Concourse. Укажем пути до ключа, локальный адрес и порт:
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/etc/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/etc/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1:2222
Запуск служб выполняется из директории /etc/systemd/system/, по этой причине необходимо создать два файла для запуска web и worker служб.
Description=Concourse CI worker process
After=concourse-web.service
[Service]
User=root
Restart=on-failure
EnvironmentFile=/etc/concourse/worker_environment
ExecStart=/usr/local/bin/concourse worker
[Install]
WantedBy=multi-user.target
В этом файле указали пользователя от кого запускается служба, путь до конфигурационного файла и путь до файла worker для запуска из директории /etc/concourse.
Теперь создадим файл для запуска службы WEB UI в директории /etc/systemd/system:
Description=Concourse CI web process (ATC and TSA)
After=postgresql.service
[Service]
User=concourse
Restart=on-failure
EnvironmentFile=/etc/concourse/web_environment
ExecStart=/usr/local/bin/concourse web
[Install]
WantedBy=multi-user.target
Добавим порт 8080 в правила ufw для получения доступа из другого хоста и запустим службы:
service start concourse-web.service
service start concourse-worker.service
Добавим в службы concourse-web и concourse-worker автозагрузку, чтобы запускались автоматически при запуске сервера:
Доступ к Web-интрефейсу
В командной строке выполним следующую команду:
В результате получим:
target saved
Проверим активный компонент с помощью команды:
name containers platform tags team state version age
01fb36b82106 0 linux none none running 2.4 1d
Проверка Web-интрефейса производится через web-браузер. В адресной строке укажем адрес сервера и порт.
Выводы
В итоге можем сказать, что были рассмотрены следующие действия:
- Скачивание исходных файлов из GitHub;
- Настройка Concourse и Fly;
- Настройка конфигурационных файлов;
- Настройка файлов для запуска служб worker и web;
- Создание worker;
- Вход в web-интерфейс.