Как установить и настроить GoCD в Ubuntu 16.04

Вступление

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

В этом руководстве мы покажем, как настроить сервер GoCD в Ubuntu 16.04. Мы установим сервер и агент для завершения работы CI / CD с использованием пакетов, предоставленных проектом. После этого мы настроим аутентификацию и изменим некоторые основные параметры для настройки нашего сервера.

Предпосылки

Исходя из рекомендаций the проект GoCD, вам потребуется сервер Ubuntu 16.04 с * как минимум 2 ГБ ОЗУ и 2 ЦП cores * для завершения этого руководства. Кроме того, in для того, чтобы обрабатывать артефакты сборки без повреждения данных, вашему серверу потребуется выделенный раздел или диск служить местом хранения артефактов. Мы будем использовать + / mnt / artifact-storage + в качестве точки монтирования для хранения артефактов в этом руководстве:

Как только ваш сервер настроен с дополнительным хранилищем, смонтированным в + / mnt / artifact-storage +, следуйте нашим https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 [ Руководство по первоначальной настройке сервера Ubuntu 16.04], чтобы настроить пользователя без полномочий root с правами + sudo + и включить базовый брандмауэр. Когда вы выполните эти шаги, продолжайте читать это руководство.

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

Мы начнем с загрузки и установки пакетов сервера и агента из специального хранилища, предоставленного проектом GoCD.

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

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

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

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

Теперь мы можем обновить локальный индекс пакетов, чтобы раскрыть список новых пакетов и установить программное обеспечение. Для запуска GoCD требуется Java 8, поэтому мы установим пакет + default-jre + вместе с сервером CI и агентом. Мы также установим пакет + apache2-utils +, который мы будем использовать для создания файла аутентификации:

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

Зависимости и программное обеспечение для непрерывной интеграции будут загружены и установлены на сервере.

Подготовка GoCD для первого использования

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

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

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

Далее мы создадим и заполним файл паролей для аутентификации. Https://github.com/gocd/gocd-filebased-authentication-plugin[file-based плагин аутентификации] использует формат аутентификации пользователя, созданный утилитой + htpasswd +.

Опция + -B + в приведенной ниже команде выбирает алгоритм шифрования + bcrypt +. Опция + -c + указывает + htpasswd + создать новый файл аутентификации по указанному пути. Команда заканчивается именем пользователя, для которого мы хотим создать пароль. Это имя пользователя полностью отделено от пользователей операционной системы, поэтому вы можете использовать любое значение для этого значения:

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

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

OutputNew password:
Re-type new password:
Adding password for user sammy

Получив файл аутентификации, мы можем запустить сервер GoCD и процессы агента. Это может занять некоторое время, чтобы завершить:

sudo systemctl start go-server go-agent

Даже после завершения команды процесс не будет полностью запущен и запущен. Сначала убедитесь, что сервисы были успешно запущены:

sudo systemctl status go-*

Если ваш вывод выглядит примерно так, оба процесса были инициализированы systemd:

Output● go-agent.service - LSB: Go Agent
  Loaded: loaded (/etc/init.d/go-agent; bad; vendor preset: enabled)
  Active:  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:  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, экран должен выглядеть следующим образом:

OutputEvery 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 :::                 :::*                    LISTEN      8942/java
tcp6       0      0 :::                 :::*                    LISTEN      8942/java

Когда отобразятся эти прослушиваемые порты, нажмите * CTRL-C *, чтобы выйти из монитора процесса.

Теперь, когда программное обеспечение полностью запущено и работает, мы можем открыть HTTPS-порт GoCD (порт 8154) в брандмауэре UFW. Нам не нужно открывать порт HTTP, потому что мы хотим, чтобы все соединения были безопасными:

sudo ufw allow 8154

Наш сервер запущен и работает. Мы подключимся к веб-интерфейсу, чтобы продолжить настройку.

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

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

В вашем браузере укажите протокол + https: // +, за которым следует доменное имя или IP-адрес вашего сервера и заканчивая спецификацией порта +: 8154 +:

https://:8154

Ваш браузер, скорее всего, отобразит предупреждение о том, что сертификат SSL службы не был подписан доверенным центром сертификации:

изображение: https: //assets.digitalocean.com/articles/gocd_install_1604/browser_ssl_warning.png [Предупреждение браузера SSL]

Поскольку GoCD самостоятельно подписывает свои сертификаты, это ожидаемое поведение. Нажмите * ADVANCED * или любую аналогичную опцию, доступную в вашем браузере, а затем в любом случае решите продолжить запрос.

При первоначальном подключении к GoCD вы попадете на экран определения конвейера. Вместо того, чтобы сразу определять конвейер, мы должны установить приоритет аутентификации, используя файл паролей, который мы создали ранее с помощью + htpasswd +. Нажмите * ADMIN * в верхнем меню навигации, а затем в подменю * Security * выберите * Авторизация конфигурации *:

изображение: https: //assets.digitalocean.com/articles/gocd_install_1604/authorization_config_item.png [Выбрать меню конфигурации авторизации]

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

Сначала введите произвольное имя для нового метода авторизации в поле * Id *. Оставьте для параметра * Идентификатор плагина * значение «Плагин аутентификации файла пароля для GoCD». Наконец, в поле * Путь к файлу пароля * введите + / etc / go / authentication +, файл, который мы создали с помощью + htpasswd +. Когда вы закончите, нажмите * Проверить соединение *, чтобы убедиться, что GoCD может получить доступ к файлу правильно:

изображение: https: //assets.digitalocean.com/articles/gocd_install_1604/enter_auth_and_check.png [Введите аутентификацию и проверьте соединение]

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

Вам будет предложено пройти аутентификацию с использованием новой схемы. Это может быть представлено как стандартное окно входа в браузер в первый раз, или вы можете быть перенаправлены на страницу входа в GoCD. Войдите, используя имя пользователя и пароль, которые вы настроили:

изображение: https: //assets.digitalocean.com/articles/gocd_install_1604/gocd_login_page.png [страница входа в GoCD]

Ваша установка GoCD теперь защищена паролем, чтобы предотвратить несанкционированный доступ.

Настройка URL сайта и расположения артефактов

Теперь, когда веб-интерфейс должным образом защищен, мы можем завершить настройку нашего CI-сервера через веб-интерфейс.

После входа в веб-интерфейс нажмите * ADMIN * в верхнем меню и выберите * Конфигурация сервера * в раскрывающемся меню:

изображение: https: //assets.digitalocean.com/articles/gocd_install_1604/server_config_item.png [пункт меню конфигурации сервера GoCD]

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

Первый пункт, на который мы должны обратить внимание - это * Site URL * в разделе * Server Management * страницы. GoCD предоставляет две настройки, которые определяют URL-адрес CI-сервера: «URL-адрес сайта» и «URL-адрес защищенного сайта». «URL сайта» - это URL сайта по умолчанию, который используется в большинстве случаев. «Безопасный URL-адрес сайта» используется, когда обычный «URL-адрес сайта» настроен на использование HTTP, а GoCD необходим для передачи конфиденциальных данных. Если «URL-адрес сайта» использует адрес HTTPS, все соединения шифруются, и «Безопасный URL-адрес сайта» устанавливать не нужно.

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

изображение: https: //assets.digitalocean.com/articles/gocd_install_1604/set_site_url.png [GoCD set URL сайта]

Далее, прокрутите вниз до раздела * Pipeline Management * страницы. Установите * Местоположение каталога артефактов * на точку монтирования + / mountain / artifact-storage, которую мы создали ранее. При желании вы можете настроить политику удаления артефактов, если хотите, чтобы GoCD автоматически управлял хранением артефактов. Оставьте это как «Никогда», чтобы управлять артефактами вручную:

изображение: https: //assets.digitalocean.com/articles/gocd_install_1604/set_artifact_location.png [GoCD установить место хранения артефактов]

Когда вы закончите, нажмите кнопку * SAVE * внизу страницы, чтобы внести изменения.

Вы можете заметить предупреждение в верхней строке меню:

изображение: https: //assets.digitalocean.com/articles/gocd_install_1604/warning.png [предупреждающая индикация GoCD]

Нажатие на индикатор предупреждения покажет вам полное предупреждающее сообщение о том, что GoCD не будет использовать местоположение + / mnt / artifact-storage +, пока оно не будет перезапущено.

изображение: https: //assets.digitalocean.com/articles/gocd_install_1604/warning_detail.png [Детальная информация о предупреждении GoCD]

Нажмите на * X *, чтобы закрыть предупреждение.

Прежде чем перезапустить сервер, давайте проверим, что наш агент был успешно зарегистрирован на сервере. Нажмите на пункт * АГЕНТЫ * в верхнем меню. Вы попадете в список агентов:

изображение: https: //assets.digitalocean.com/articles/gocd_install_1604/available_agents.png [список доступных агентов GoCD]

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

Теперь, когда мы подтвердили присутствие нашего агента, мы можем перезапустить процесс сервера GoCD, чтобы завершить изменение местоположения артефакта. Вернувшись в командную строку, перезапустите службу, набрав:

sudo systemctl restart go-server

Как только служба перезапустится и возобновит прослушивание соединений через порт 8154, вы сможете повторно подключиться к веб-интерфейсу.

Заключение

В этом руководстве мы установили и настроили сервер и агент GoCD, работающие в Ubuntu 16.04. Мы установили выделенное пространство хранения артефактов в отдельном разделе для обработки созданных ресурсов сборки и настроили аутентификацию для защиты веб-интерфейса.

Как только GoCD запущен и работает, следующим хорошим шагом будет защита вашей установки с помощью доверенного SSL-сертификата. Следуйте нашему руководству по https://www.digitalocean.com/community/tutorials/how-to-configure-gocd-with-let-s-encrypt-ssl-certificates-on-ubuntu-16-04 как настроить GoCD. с давайте зашифруем SSL-сертификаты], чтобы узнать, как это настроить.

Related