Установка Concourse CI
Введение
Concourse CI – современная масштабируемая система для настройки непрерывной интеграции и для автоматизации конвейеров тестирования с помощью компонуемого декларативного синтаксиса. По сравнению с остальными системами для настройки непрерывной интеграции, команда Concourse вкладывают все усилия, чтобы упростить управление конвейером непрерывной интеграции.
В этом руководстве рассмотрим установку Concourse CI на заранее установленный и настроенный сервер Ubuntu/Debian/CentOS. Настроим базу данных PostgreSQL для использования в качестве серверной части.
Подготовка к установке
Перед установкой Concourse CI, необходимо развернуть сервер Debian/Ubuntu/CentOS
Установка и конфигурирование PostgreSQL
Прежде чем скачивать и устанавливать Concourse CI, необходимо обновить индекс пакетов и установить PostgreSQL.
apt update apt install postgresql postgresq-contrib
После установки PostgreSQL создадим пользователя в базе данных с именем concourse. Создание пользователя необходимо выполнить от имени postgres.
sudo -u postgres createuser concourse
Concourse по умолчанию подключается к базе данных с названием atc. Создадим базу данных с названием atc и присвоим права собственника на пользователя concourse.
sudo -u postgres createdb --owner=concourse atc
После установки и создания базы данных можем скачать и установить Concourse CI.
Скачивание и установка Concourse CI
Скачать файлы можно из официального сайта Concourse либо из GitHub. В нашем случае рассматривается скачивание из GitHub. Необходимо скачать сервер.
curl -LO "url_for_concourse_linux.tgz" tar -xzf concourse*.tgz
Далее загрузим клиент с названием fly в домашнюю директорию и распакуем.
curl -LO "ufl_for_fly" tar -xzf fly*.tgz
Далее необходимо определить права для выполнения запуска файлов распакованным файлам и переместить все файлы в директорию /usr/local/bin.
chmod +x concourse* fly* mv concourse* /usr/local/bin/ mv fly* /usr/local/bin/
Проверим версии fly и concourse с помощью команды:
concourse --version fly --version
В результате получим версии 7.9.0.
Конфигурирование служб Concourse CI
Необходимо создать директорию concourse в /etc/:
mkdir -p /etc/concourse
Следующим шагом создадим ключи шифрования для получения доступа к сервису и настроим конфигурацию для Concourse.
Перейдем в директорию /etc/concourse и сгенерируем ключи:
sudo ssh-keygen -t rsa -q -N '' -f /etc/concourse/tsa_host_key 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
Проверим содержимое папки с помощью:
ls -l
В результате получим список созданных ключей:
-rw------- 1 spcsteam spcsteam 1823 Jan 4 12:18 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, чтобы раздать сотрудникам этот ключ для авторизации.
cp /etc/concourse/worker_key.pub /etc/concourse/authorized_worker_keys
Создадим конфигурационный файл для запуска WEB UI службы Concourse.
vim /etc/concourse/web_environment
В файле укажем пути для использования ключей и путь до файла для запуска PostgreSQL. А также укажем логин, пароль, адрес сервера и порт.
CONCOURSE_SESSION_SIGNING_KEY=/etc/concourse/session_signing_key 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. Укажем пути до ключа, локальный адрес и порт:
vim /etc/concourse/worker_environment
CONCOURSE_WORK_DIR=/var/lib/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 служб.
vim /etc/systemd/system/concourse-worker.service
[Unit] 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:
vim /etc/systemd/system/concourse-web.service
[Unit] 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 для получения доступа из другого хоста и запустим службы:
ufw allow 8080 service start concourse-web.service service start concourse-worker.service
Добавим в службы concourse-web и concourse-worker автозагрузку, чтобы запускались автоматически при запуске сервера:
systemctl enable concourse-web concourse-worker
Доступ к Web-интрефейсу
В командной строке выполним следующую команду:
fly -t tutorial login -c http://127.0.0.1:8080 -u serverspace -p p@ssw0rd
logging in to team 'main' target saved
Проверим активный компонент с помощью команды:
fly -t tutorial workers
#Результат name containers platform tags team state version age 01fb36b82106 0 linux none none running 2.4 1d
Проверка Web-интрефейса производится через web-браузер. В адресной строке укажем адрес сервера и порт.