news
Управление шириной канала в настроенных серверах с VPN
KI
18 января 2023
Обновлено 18 января 2023

Установка Concourse CI

Debian Linux Ubuntu

Введение

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-браузер. В адресной строке укажем адрес сервера и порт.

6
Рисунок 1 – Web-интерфейс Concourse CI

Выводы

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

  • Скачивание исходных файлов из GitHub;
  • Настройка Concourse и Fly;
  • Настройка конфигурационных файлов;
  • Настройка файлов для запуска служб worker и web;
  • Создание worker;
  • Вход в web-интерфейс.
Оценка:
5 из 5
Аverage rating : 5
Оценок: 1
191028 Санкт-Петербург Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700 300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700 300