Содержание


Настройка среды непрерывного развертывания с помощью Jenkins

Comments

Для организации непрерывного развертывания важно правильно настроить среду. Она определяет эффективность системы DevOps и то, что можно делать в процессе непрерывного развертывания.

Эта статья содержит информацию о платформе Jenkins и демонстрирует:

  • как настроить среду непрерывного развертывания с помощью Jenkins;
  • применять эти знания в рамках среды непрерывного развертывания;
  • реализовать среду непрерывного развертывания с помощью Jenkins.

Целевая аудитория

Эта статья предназначена для программистов, работающих над непрерывным развертыванием или непрерывным автоматическим тестированием ПО. Чтобы выполнить инструкции этой статьи, читатель должен быть знаком:

  • с разработкой сценариев;
  • процессом разработки программного обеспечения.

Обзор платформы Jenkins

Jenkins – это инструмент непрерывной интеграции, который чаще всего используется для разработки программного обеспечения. Это среда автоматизации, которая выполняет повторяющиеся задания. Jenkins может выполнять и контролировать выполнение команд на удаленных системах, а также всего того, что можно выполнить из командной строки. С помощью вспомогательных плагинов Jenkins объединяет электронную почту, TestNG и другие инструменты.

После установки (см. врезку) доступ к Jenkins осуществляется через браузер по адресу: http://yourjenkinsmasterhost:8080.

Дженкинс поддерживает режим ведущий-ведомый. Работа по сборке проектов делегируется нескольким ведомым узлам. Это позволяет размещать в одной установке Jenkins большое число проектов или создавать разные среды для сборки-тестирования.

Настройка и обеспечение работы Jenkins

Прежде чем использовать среду Jenkins, ее необходимо настроить. В этой статье мы покажем, как настроить режим ведущий-ведомый, установить плагины, настроить проекты и управлять переменными и свойствами.

Настройка ведущей и ведомых машин

Сначала установим Jenkins на ведущей машине (Linux или Windows), а затем с помощью ведущей машины Jenkins настроим ведомые машины (Windows или Linux).

В Jenkins есть встроенный клиент SSH, который используется для взаимодействия с удаленным sshd и с агентом ведомой машины. Существует несколько способов для связи между ведущей и ведомыми машинами:

  • для ведомых машин UNIX используется SSH. На ведомых машинах требуются только SSH и JRE;
  • для Windows используется Distributed Component Object Model (DCOM);
  • когда ведущая машина не может «видеть» ведомые, используется отдельное соединение через сокет и Java Web Start.

Установка ведущей машины Linux

Чтобы установить ведущую машину Linux, введите команды из листинга 1.

Листинг 1. Установка ведущей машины Linux
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins

Установка ведущей машины Windows

Чтобы установить ведущую машину Windows, введите команды из листинга 2.

Листинг 2. Установка ведущей машины Windows
java -jar jenkins.war

После выполнения команд откройте страницу http://<hostname>:8080/ и выберите пункт Manage Jenkins > Install as Windows Service > Install.

Установка ведомых машин

Откройте http://<JenkinsMasterHost>:8080/ > Manage Jenkins > Manage Node > New Node и настройте параметры ведомой машины в соответствии с параметрами хоста. Ведущая машина Jenkins установит Jenkins на ведомые машины.

Для ведомых машин Windows имеется дополнительная команда:

Листинг 3. Дополнительная команда для ведомых машин Windows
sc.exe create "<serviceKey>" start= auto binPath= "<path to jenkins-slave.exe>" 
DisplayName= "<service display name>"

Имя ключа реестра, определяющего службу, – <serviceKey>. <service display name > (отображаемое имя службы) — это метка, которая идентифицирует службу в интерфейсе администратора.

Управление плагинами

Плагины – это еще одна важная особенность Jenkins. В настоящее время Jenkins поддерживает более 1000 плагинов. Эти плагины можно разделить на категории (плагины для управления исходным кодом, для создания отчетов, для создания инструментов и т.п.). С помощью плагинов можно контролировать, развертывать или настраивать различные задания в Jenkins. Чтобы управлять плагинами, откройте страницу https://JenkinsMasterHost:8080 и выберите Manage Jenkins > Manage Plugins. Имеются четыре вкладки:

  • Updates: установленные плагины, для которых есть обновления;
  • Available: плагины, доступные для установки;
  • Installed: установленные плагины;
  • Advanced: управление плагинами.

Установка плагинов через Интернет

Когда у ведущей машины Jenkins есть доступ в Интернет, плагины устанавливаются легко. Выберите плагины для установки на вкладке Available. Удалять плагины можно на вкладке Installed. Чтобы удалить плагины, нажмите кнопку uninstall.

Ручная установка плагинов

Если у ведущей машины Jenkins нет доступа в Интернет, плагины можно установить вручную. Найдите плагин, который нужно установить, и сохраните загруженный файл *.hpi/*.jpi в каталоге $JENKINS_HOME/plugins. Перезапустите Jenkins, чтобы включить плагины.

Проекты Jenkins

Jenkins поддерживает четыре типа проектов: проекты произвольного типа, экспертные, с несколькими конфигурациями и внешние задачи. Проект произвольного типа – это центральный элемент Jenkins. Его можно объединить в системе управления исходным кодом (SCM) с любой системой сборки. А также использовать для других целей, помимо сборки программного обеспечения.

Настройка проектов

Чтобы создать проект, откройте страницу https://JenkinsMasterHost:8080, выберите New Item и укажите имя (Item name) и тип (Type) проекта.

На странице настройки проекта имя проекта также называется Project name. Элементы могут быть четырех типов. Можно также выбрать copy existing item (скопировать существующий элемент), как показано на рисунке 1. Нажмите кнопку ОК, чтобы открыть страницу настройки проекта.

Рисунок 1. Создание нового элемента
Кнопки в окне создания нового элемента
Кнопки в окне создания нового элемента

На странице настройки содержится следующая информация:

Project name: имя проекта; при его изменении также изменяется имя элемента;

Description: описание задачи;

Strategy: стратегия журналирования, количество журналов;

Parameterized: определение переменных проекта. Существуют переменные разного типа (параметр файла, параметр текста, параметр строки и т.д.);

Where: ограничивает область исполнения проекта;

Advance configuration: дополнительные спецификации для управления способом сборки проекта.

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

  • Source code management: инструмент управления исходным кодом;
  • Build triggers: метод запуска сборки;
  • Build: сборка – это наиболее важная часть проекта. Укажите точные действия по запуску проекта. Обычно это команды DOS для Windows или Shell для Linux;
  • Post-build actions: действия, выполняемые после сборки. Как правило, это отправка сообщений электронной почты, запуск других сборок или публикация отчетов о результатах.

После завершения настройки нажмите кнопку Save. Сохраненный проект находится в списке на странице https://JenkinsMasterHost:8080Jenkins > All.

Запуск сборки проекта

Jenkins позволяет запускать сборку проекта вручную или автоматически. Существуют различные механизмы запуска сборки. Если выбрать автоматическую сборку, то при настройке проекта можно определить значение параметра Build Triggers. Возможные варианты:

  • сборка проекта после сборки других проектов: после настройки проекта можно определить, нужно ли после этого проекта собирать другие проекты. Выберите этот вариант, если проект зависит от других проектов;
  • дистанционный запуск сборки (например, из сценария): сборка проекта запускается из другой системы или из другого узла. Например, сборку проекта можно вызвать по электронной почте или направить запрос на сборку из сценария;
  • периодическая сборка: создание графика периодической сборки проектов в соответствии с конфигурацией;
  • опрос SCM: этот вариант собирает проект путем внесения изменений в исходный код. В этом случае указывают, как часто Jenkins должен опрашивать систему управления версиями. При наличии изменений исходного кода выполняется сборка проекта.
Рисунок 2. Параметры запуска сборки
Параметры запуска сборки
Параметры запуска сборки

Распределение проектов

Точное распределение зависит от настройки каждого проекта. Если для проекта заданы ограничения на место исполнения (Restrict where this project can run), то он будет работать только на указанном компьютере. Другие проекты могут свободно перемещаться между ведомыми машинами – все зависит от конфигурации.

В настоящее время Jenkins реализует следующие стратегии распределения проектов:

  • если проект настроен с ограничениями, он запускается только на указанной машине;
  • Jenkins старается собрать проект на том же компьютере, где он собирался ранее;
  • длительные процессы сборки Jenkins старается переносить на ведомые машины.

Настройка переменных и свойств

Глобальные свойства

В глобальных свойствах настраиваются переменные среды (определение имени и значения свойств) или местоположение инструментов: откройте страницу http://<JenkinsMasterHost>:8080 и выберите Manage Jenkins > configuration. Эти свойства можно использовать во всех проектах Jenkins.

Переменные среды

В проектах можно ссылаться на переменные среды. Выберите поле Environment variables и определите имя (name) и значение (value) переменных, как показано на рисунке 3.

Рисунок 3. Определение переменных среды
Определение переменных среды
Определение переменных среды

Местоположение инструментов

Установите флажок Tool Locations. Выберите имя инструмента из раскрывающегося списка и укажите каталог для него. Инструменты можно вызывать в проектах.

Рисунок 4. Определение местоположения инструментов
Определение местоположения инструментов
Определение местоположения инструментов

Локальные свойства проекта

Локальные свойства доступны только в рамках проекта. При настройке проекта выберите вариант This build is parameterized, как показано на рисунке 5. Он позволяет добавлять параметры в виде пар имя-значение. Такие параметры можно использовать как локальные свойства проекта.

Рисунок 5. Установка локальных свойств
Локальные свойства
Локальные свойства

Практическое применение: структура среды и процесс непрерывного развертывания

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

Процесс

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

  • разработчик вносит изменения в код;
  • инструменты управления исходным кодом выполняют сборку;
  • производится автоматическое тестирование;
  • сборка устанавливается.

Процесс непрерывного развертывания показан на рисунке 6. В назначенное время стартует первый проект в Jenkins.

Проект 1
Первая задача в рамках этого проекта – загрузить исходный код из инструмента управления исходным кодом, такого как IBM® Rational Team Concert™. Если проект дает сбой, рассылаются уведомления по электронной почте, и все остальные проекты останавливаются. Если проект оказывается успешным, запускается следующий проект.
Проект 2
IBM® Security AppScan® анализирует исходный код, загруженный из проекта 1, на наличие проблем безопасности.
Проект 3
После завершения работы AppScan начинается сборка проекта.
Проект 4
После успешной сборки устанавливается следующий проект, который собирается в среде Build Verification Test (BVT).
Проект 5
Выполняются BVT-тесты в среде BVT. Если BVT-тест проходит, Jenkins начинает установку сборки одновременно в среде разработки и в среде тестирования (проекты 6 и 7).
Проект 6
Выполняется установка сборок в средах разработки и рассылаются уведомления по электронной почте. Проект установки сборок в средах разработки готовит среды, так чтобы разработчики могли решать свои задачи по интеграции или разработке.
Проект 7
Установка сборок в среды тестирования. Установив сборку в среду тестирования, Jenkins запускает проект 8 по выполнению теста Functional Verification Test (FVT).
Проект 8
FVT – это список из множества автоматических тестов. После прогона FVT сборка устанавливается в производственные среды (проект 8).
Проект 9
Производственные среды могут быть установлены на локальных серверах ваших клиентов, в облаке или на IBM® Softlayer®. Доступ к ним предоставляется как внутренним, так и внешним пользователям.

Процесс непрерывного развертывания показан на рисунке 6. После успешного завершения проекта запускается следующий проект. Если проект дает сбой, то процесс заканчивается, и подписчикам рассылаются электронные уведомления.

Рисунок 6. Схема процесса непрерывного развертывания
Схема процесса непрерывного развертывания
Схема процесса непрерывного развертывания

Топология системы непрерывного развертывания

В левой части рисунка 7 показан традиционный процесс развертывания. Разработчик фиксирует набор изменений на сервере управления исходным кодом, например, Rational Team Concert (RTC), затем сервер сборки выполняет сборку.

В правой части рисунка 7 показан процесс непрерывного развертывания. После добавления Jenkins появляется ведущая машина Jenkins. На этом сервере установлен Rational Team Concert buildtoolkit. Ведущая часть Jenkins устанавливается в плагин Rational Team Concert. Она использует buildtoolkit для загрузки исходного кода из Rational Team Concert и запускает buildtoolkit для выполнения сборки. Проекты AppScan и BVT также работают на ведущей машине Jenkins. Среды разработки, тестирования и производства играют роль ведомых машин Jenkins. Ими управляет ведущая машина Jenkins, и они выполняют проекты по установке. Тестовые среды выполняют проект функционального тестирования.

Примечание.
Задачи проще отслеживать, если связать проекты с компьютерами, так как разные машины играют разные роли.

Рисунок 7. Топология системы непрерывного развертывания
Топология системы непрерывного развертывания
Топология системы непрерывного развертывания

Заключение

Теперь вы знаете, как настроить среду непрерывного развертывания с помощью Jenkins. Эта среда помогает автоматически распределять работу, что экономит драгоценное время разработчиков и тестеров. Она также помогает выявить любые проблемы или дефекты на ранних этапах процесса.


Ресурсы для скачивания


Похожие темы


Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Rational
ArticleID=1017201
ArticleTitle=Настройка среды непрерывного развертывания с помощью Jenkins
publish-date=10092015