Установка и настойка GoCD в Ubuntu 16.04

GoCD – это высокопроизводительная платформа непрерывной интеграции и доставки, которая автоматизирует процессы тестирования и релиз. Благодаря множеству расширенных функций (способность сравнивать сборки, визуализировать сложные рабочие процессы и автоматизировать отслеживание версий) GoCD – это гибкий инструмент, который может помочь разработчикам поставлять проверенное программное обеспечение в производственные среды.

Данный мануал поможет установить сервер и агент GoCD в Ubuntu 16.04.

Требования

Согласно рекомендациям проекта GoCD, вам понадобится:

  • Сервер Ubuntu 16.04, 2 Гб RAM и 2 ядра минимум.
  • Чтобы обрабатывать артефакты сборки без искажения данных, серверу понадобится выделенный раздел или диск, который будет служить местом хранения артефактов. В данном мануале для хранения артефактов используется /mnt/artifact-storage. Настроить такой диск вам поможет руководство Разделение и форматирование дисков в Linux.
  • Пользователь с доступом к sudo и настроенный брандмауэр (вам поможет руководство по начальной настройке).

Установка сервера и агента GoCD

Для начала нужно загрузить и установить серверный и агентский пакеты из выделенного репозитория проекта GoCD.

Добавьте новый репозиторий в APT.

echo "deb https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list

Также необходимо добавить GPG-ключ GoCD в APT, чтобы проверить подписи на пакетах GoCD. Вы можете загрузить ключ и добавить его в свою систему с помощью команды:

curl https://download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -

Затем нужно обновить индекс пакетов, чтобы система загрузила список новых пакетов. Для работы GoCD требуется Java 8. Пакет default-jre можно установить одновременно с сервером и агентом. Кроме того, нужно установить apache2-utils.

sudo apt-get update
sudo apt-get install default-jre go-server go-agent apache2-utils

Программы непрерывной интеграции и зависимости были установлены на сервер.

Подготовка GoCD к работе

Прежде чем начать работу с сервером GoCD, нужно подготовиться.

Для начала нужно открыть процессу GoCD доступ к точке монтирования артефактов, чтобы он мог хранить там наборы данных. Сервер непрерывной интеграции работает в системе как пользователь и группа go. Передайте этому пользователю права на точку монтирования /mnt/artifact-storage.

sudo chown -R go:go /mnt/artifact-storage

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

Плагин аутентификации GoCD использует формат пользователя, созданный утилитой htpasswd.

Опция –В включает алгоритм шифрования bcrypt. Опция –с помогает утилите htpasswd создать новый файл по указанному пути. В конце команды указано имя пользователя, для которого нужно создать пароль. Этот пользователь не является системным, потому вы можете использовать здесь любое имя.

sudo htpasswd -B -c /etc/go/authentication 8host

Вам будет предложено ввести и подтвердить пароль для нового пользователя. Имя пользователя и зашифрованная версия пароля будут записаны в файл:

New password:
Re-type new password:
Adding password for user 8host

Примечание: Вы можете добавить в файл больше учетных данных. Однако после добавления первого пользователя команду htpasswd нужно вызывать без флага –с, иначе она создаст новый файл, который заменит существующий файл паролей.

sudo htpasswd -B /etc/go/authentication next_user

Теперь можно запустить процессы агента и сервера GoCD.

sudo systemctl start go-server go-agent

Сначала нужно убедиться, что процессы запустились успешно:

sudo systemctl status go-*

Если это так, команда вернет такой вывод:

go-agent.service - LSB: Go Agent
Loaded: loaded (/etc/init.d/go-agent; bad; vendor preset: enabled)
Active: active (exited) since Thu 2017-07-27 19:39:18 UTC; 1min 36s ago
Docs: man:systemd-sysv-generator(8)
Process: 8911 ExecStart=/etc/init.d/go-agent start (code=exited, status=0/SUCCESS)
. . .
Jul 27 19:39:18 go5 systemd[1]: Started LSB: Go Agent.
go-server.service - LSB: Go Server
Loaded: loaded (/etc/init.d/go-server; bad; vendor preset: enabled)
Active: active (exited) since Thu 2017-07-27 19:39:33 UTC; 1min 21s ago
Docs: man:systemd-sysv-generator(8)
Process: 8867 ExecStop=/etc/init.d/go-server stop (code=exited, status=0/SUCCESS)
Process: 8907 ExecStart=/etc/init.d/go-server start (code=exited, status=0/SUCCESS)
. . .
Jul 27 19:39:33 go5 systemd[1]: Started LSB: Go Server.

Затем нам нужно дождаться, когда сервис свяжется с портами 8153 и 8154. По первому порту GoCD прослушивает HTTP-трафик, а по второму – трафика HTTPS. Хотя процессы запустились, они, возможно, еще не начали принимать веб-трафик.

Чтобы узнать, какие порты прослушиваются в настоящее время, введите:

sudo watch netstat -plnt

Эта команда проверит прослушиваемые TCP-порты и будет обновлять экран каждые 2 секунды. Когда GoCD начинает прослушивать порты 8153 и 8154, экран должен выглядеть так:

Every 2.0s: netstat -plnt                                                    Thu Jul 27 20:16:20 2017
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1736/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1736/sshd
tcp6       0      0 :::8153                 :::*                    LISTEN      8942/java
tcp6       0      0 :::8154                 :::*                    LISTEN      8942/java

Чтобы остановить команду, нажмите CTRL-C.

Теперь, когда программа GoCD работает, можно открыть HTTPS-порт 8154 в брандмауэре UFW. Порт HTTP открывать не нужно, так как программа не должна поддерживать незашифрованных соединений.

sudo ufw allow 8154

Важно! После того как порт 8154 будет разблокирован в брандмауэре, веб-интерфейс GoCD будет доступен на всех интерфейсах. Хотя интерфейс блокируется с помощью файла /etc/go/authentication, в настоящее время GoCD не поддерживает парольную аутентификацию. С настройки аутентификации начнется следующий раздел, потому рекомендуем перейти к нему как можно скорее.

Настройка парольной аутентификации

Теперь можно подключиться к сервису в веб-браузере.

Для этого укажите протокол https://, затем домен или IP-адрес сервера, а затем порт :8154.

https://server_domain_or_IP:8154

Вероятно, браузер отобразит предупреждение о том, что SSL-сертификат данного сервиса не подписан доверенным центром сертификации. Это происходит потому, что программа GoCD использует самоподписанные сертификаты. Чтобы добавить ее в исключения и продолжить, нажмите ADVANCED (или подобную опцию).

Подключившись к GoCD, вы попадете на страницу настройки конвейера. Сначала нужно настроить поддержку парольной аутентификации. Нажмите ADMIN в верхнем меню навигации, затем в подменю Security выберите Authorization Configuration.

На следующей странице нажмите кнопку Add в правом верхнем углу. Появится форма, в которой вы сможете указать данные о файле аутентификации.

Введите любое имя для нового метода авторизации в поле Id. В разделе Plugin Id оставьте «Password File Authentication Plugin for GoCD». В поле Password file path укажите путь к файлу аутентификации, /etc/go/authentication. Нажмите Check connection, чтобы убедиться, что GoCD может подключиться к файлу.

Если GoCD выводит сообщение «Connection OK», нажмите Save, чтобы включить аутентификацию.

Вам будет предложено пройти аутентификацию. В первый раз форма входа может быть представлена в виде стандартного окна входа в браузер; также программа может перенаправить вас на страницу входа GoCD. Войдите с помощью своих учетных данных.

Настройка URL-адреса сайта и места хранения артефактов

Нажмите ADMIN в верхнем меню и выберите Server Configuration.

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

Найдите Site URL в разделе Server Management. GoCD предоставляет два параметра, которые определяют URL сервера непрерывной интеграции: Site URL и Secure Site URL. Первый параметр – стандартный URL-адрес, используется в большинстве случаев. Второй параметр используется в случаях, если Site URL настроен на поддержку HTTP, а GoCD передает конфиденциальные данные. Если в параметре Site URL указан адрес HTTPS, все соединения шифруются, и параметр Secure Site URL включать не нужно.

Поскольку брандмауэр открывает доступ только к HTTPS-порту, в параметре Site URL нужно указать протокол https://, а затем домен или IP-адрес сервера и порт 8154. Параметр Secure Site URL оставьте пустым, обычный URL-адрес и так поддерживает шифрование.

Затем найдите раздел Pipeline Management. В Artifacts Directory Location укажите точку монтирования /mnt/artifact-storage. Также можно при желании изменить политику удаления артефактов GoCD. Чтобы управлять артефактами вручную, оставьте значение Never.

Чтобы сохранить новые настройки, нажмите SAVE.

Интерфейс может вывести предупреждение в верхней строке меню. Чтобы открыть его, кликните по красному индикатору Warning. В предупреждении сообщается, что GoCD сможет использовать /mnt/artifact-storage только после перезагрузки.

The change in the artifact directory location will not take effect until GoCD is restarted [Jul 29 16:43:12]

Чтобы закрыть предупреждение, нажмите Х.

Прежде чем перезапустить сервер, убедитесь, что агент был успешно зарегистрирован на сервере. Нажмите на AGENTS в верхнем меню. Вы попадете в список агентов.

Процесс агента успешно зарегистрирован на сервере и имеет статус «Idle». Это означает, что агент включен, но у него нет заданий.

Убедившись, что агент зарегистрирован, перезапустите сервер GoCD. Вернитесь в командную строку и введите:

sudo systemctl restart go-server

Заключение

Сервер и агент GoCD успешно установлены на сервер Ubuntu 16.04. Артефакты будут храниться в выделенном пространстве. Интерфейс защищен парольной аутентификацией.

Теперь вы можете защитить установку с помощью SSL-сертификата.

Читайте также: Защита GoCD с помощью SSL-сертификата Let’s Encrypt в Ubuntu 16.04

Tags: ,