Развивая концепцию подхода DevOps на платформе Jelastic , на этот раз мы рады представить вам третье руководство из этой посвященной серии. Новое решение, описанное в сегодняшней статье, обеспечивает еще большую автоматизацию, не только обеспечивая управление жизненным циклом проекта, но и упрощая процесс настройки сервера непрерывной интеграции Jenkins.
Это достигается за счет объединения двух прогрессивных технологий: подключаемых модулей Jelastic и операций Cloud Scripting — решения нового поколения для управления приложениями и серверами в облаке, которое в настоящее время интенсивно разрабатывается командой Jelastic. В частности, такая интеграция позволяет автоматически создавать полный список шаблонов заданий, которые просто нужно слегка настроить (с помощью таких операций, как установка URL-адреса для хранилища с требуемым проектом вместо того, который используется по умолчанию) для завершения работы сервера Jenkins. регулировка.
Истинная эффективность такой реализации максимально раскрывается в случае обработки нескольких проектов, поскольку вместо бесчисленных пошаговых ручных конфигураций, необходимых для правильной настройки каждого из серверов Jenkins, вам необходимо создать одно дополнение только один раз. Впоследствии, он может быть легко применен к требуемой среде за несколько щелчков мышью, и для настройки требуется лишь несколько пользовательских параметров. Такой подход экономит все больше времени на каждой последующей установке.
Поскольку эта статья тесно связана с двумя предыдущими частями серии «Инструменты DevOps для непрерывной доставки в частном облаке Jelastic» , мы будем периодически ссылаться на них, чтобы не повторять описание одних и тех же шагов. Вот почему мы рекомендуем вам ознакомиться с этими руководствами, прежде чем продолжить:
- Часть 1: Распределение рабочих нагрузок и установка Jenkins
- Часть 2. Настройка Jenkins для App Life Cycle Automation
Общие препараты
Прежде всего, позвольте нам напомнить вам о нескольких обязательных договоренностях, которые необходимо выполнить для обеспечения наилучшего опыта DevOps:
- Ваша установка Jelastic должна включать три отдельных набора оборудования, выделенных для групп разработки , тестирования и производства отдельно:
-
Поскольку ядро подхода непрерывной доставки приложений, о котором мы говорим, представлено на сервере Jenkins, вам необходимо иметь среду с соответствующим программным обеспечением. Как вы помните из наших предыдущих руководств в серии, получить его становится довольно легко с помощью встроенного Jelastic Marketplace, доступ к которому можно получить либо через соответствующую страницу сайта, либо непосредственно через панель инструментов .
Ранее мы подробно рассмотрели эти шаги, поэтому мы уверены, что у вас не возникнет никаких проблем.
Настройка Jenkins с использованием облачных сценариев
Как уже упоминалось во введении к этому руководству, большая часть работы на этапе настройки сервера Jenkins будет автоматизирована. Чтобы добиться этого, сначала в коде должны быть реализованы соответствующие конфигурации, которые впоследствии будут выполняться на вашем сервере приложений с обработкой Jenkins. В Jelastic это можно сделать путем подготовки специального файла манифеста JSON, который, будучи интегрированным в платформу, будет представлять собой подключаемое дополнение , которое может быть легко запущено любым пользователем непосредственно через панель мониторинга.
Создание дополнения
Давайте начнем с составления основы для нашего дополнения, чтобы получить возможность применять его в требуемой среде Jelastic:
- Войдите в свою панель JCA как пользователь с правами администратора и перейдите в раздел Marketplace, используя главное меню слева.
Оказавшись внутри, разверните список « Добавить» в верхней панели и выберите параметр « Надстройка» .
- В открытом редакторе вставьте шаблон общего кода следующей структуры:
{
"jpsType": "update",
"jpsVersion": "0.3",
"application": {
"name": "package_name",
"logo": "logo_url",
"type": "java",
"onInstall": {
"executeShellCommands": {
"nodeType": "tomcat7",
"commands": [
custom_code
]
}
}
}
}
Выделенные параметры должны быть заменены соответствующими данными — здесь вам нужно определить общую информацию о вашем пакете и указать операции, которые он должен выполнять:
- имя_пакета — имя надстройки, которое будет называться на панели пользователя (например, Jenkins Configurations )
- logo_url — ссылка на изображение, которое будет использоваться в качестве значка пакета (вы можете использовать наш по умолчанию, скопировав и указав этот URL )
- custom_code — список команд оболочки, разделенных запятыми, которые будут запускаться на устройстве дополнения
Хотя первые две настройки очевидны, последнюю нужно рассмотреть более подробно, поэтому следующий раздел руководства посвящен специфике сценариев необходимых операций.
Составление сценария
В нашем примере инструмент интеграции Jenkins устанавливается поверх Tomcat 7 , поэтому все используемые команды будут основаны на его спецификациях. Мы намерены автоматизировать процесс с помощью сценариев следующих операций:
- Загрузка скриптов, необходимых для настройки заданий.
- Конфигурирование самого Дженкинса.
- Создание и связывание заданий для автоматического ведения приложения в течение жизненного цикла.
Далее, мы рассмотрим каждый из этих пунктов более подробно и подготовим ядро нашего манифеста в соответствии с этим потоком.
Примечание. Ниже приведен пример кода, который необходимо изменить в соответствии со спецификой вашего приложения. Чтобы убедиться, что это было сделано правильно и все действия были правильно написаны, мы рекомендуем провести предварительную проверку вашего кода. Это можно сделать путем создания отдельной среды с той же топологией, для которой создается ваше дополнение (например, Tomcat 7 с приложением Jenkins , развернутым в нашем случае) и выполнением скорректированных команд непосредственно внутри контейнера вашего вычислительного узла с использованием SSH . Если вам нужна помощь в этом, обратитесь к полному руководству по дополнению DevOps для Jenkins Устранение неполадок, который дополнительно включает в себя описания ожидаемых результатов для каждой из представленных операций.
Итак, давайте покажем, как можно легко выполнить вышеупомянутые предложенные процессы с помощью соответствующих параметров облачных сценариев. Впоследствии все они должны быть вставлены вместо параметра custom_code в примере манифеста, в том же порядке, в котором они описаны ниже.
- Вот первая часть скрипта, которую мы предлагаем создать:
“mkdir /opt/tomcat/demo“,
“cd /opt/tomcat/demo”,
“echo ENV_NAME= > /opt/tomcat/demo/variables”,
“curl -fsSL file_url -o install.sh“,
“curl -fsSL file_url -o transfer.sh“,
“curl -fsSL file_url -o migrate.sh“,
“curl -fsSL file_url -o runtest.sh“,
В этом фрагменте кода вы можете распознать процесс загрузки сценариев (они необходимы для задания заданий Jenkins) в контейнер. Ранее мы делали это вручную и рассматривали все подробно, поэтому здесь мы просто напомним вам некоторые важные моменты (выделенные в примере выше), на которые вам необходимо обратить внимание:
- / opt / tomcat / demo — полный путь к папке, где будет храниться вся информация о ваших скриптах (мы будем использовать демо , но вы можете создать и использовать любой другой желаемый каталог — просто не забудьте указать правильный путь везде во всем вашем коде)
- curl -fsSL file_url -o file_name — эта команда инициирует загрузку файла внутри контейнера; для этого примера нам потребуются следующие скрипты:
- install.sh — автоматически регистрируется как указанный пользователь и создает новую среду с топологией, установленной согласно файлуманифестаJelastic
- transfer.sh — передает в собственность окружения на указанный пользователем на основе среды передающей функции
- migrate.sh — перемещает среду в указанный аппаратный набор (группа hardnode)
- runtest.sh — в нашем примере он имитирует тестирование в демонстрационных целях, поэтому мы не предоставляем его код. При необходимости создайте свой собственный в соответствии со спецификой вашего приложения и назначьте его загрузку вместе с остальными сценариями.
Обратите внимание, что перед применением каждый из шаблонов сценариев, связанных выше, должен быть дополнительно настроен путем замены следующих параметров в соответствии с настройками вашей платформы:
- / path / to / scripts / — тот же путь, который вы указали выше ( / opt / tomcat / demo в нашем случае)
- {cloud_domain} — ваше доменное имя в Jelastic Platform
- {JCA_dashboard_appID} — ваша приборная панель ID, которые можно было бы рассматривать в Platform.DASHBOARD_APPID параметра в JCA> О разделе
- {JCA_appstore_appID} — идентификатор магазина приложений, указанный в том же разделе ( параметр Platform.APPSTORE_APPID )
- {url_to_manifest} — ссылка на файл манифеста Jelastic, созданный в соответствии с нашей документацией (мы будем использовать тот же, что и раньше — он устанавливает два сервера приложений Tomcat, на которых работает балансировщик нагрузки NGINX)
Кроме того, 3-я строка определяет создание файла переменных вместе с загруженными сценариями, предназначенными для дальнейшего хранения автоматически сгенерированного имени для сред с различными версиями вашего приложения.
- Вторая часть кода удалит все существующие (то есть автоматически установленные во время первоначального развертывания инструмента) плагины Jenkins, чтобы предотвратить проблемы несовместимости или несоответствие их версий с будущими конфигурациями:
“rm -rf /opt/tomcat/temp/.jenkins/plugins”,
- После этого вам нужно перейти в основной каталог .jenkins и добавить необходимые плагины и файлы конфигурации в интегратор Jenkins вместо удаленных, загрузив и распаковав соответствующий архив plugins.zip .
“cd /opt/tomcat/temp/.jenkins/”,
“curl -fsSL file_url -o plugins.zip“,
“unzip -o plugins.zip >/dev/null 2>&1″,
Мы рекомендуем использовать пакет, который мы подготовили для этого примера, который уже содержит все необходимые модули. Тем не менее, вы можете дополнить его с другими плагинами , если это необходимо или просто упаковать свой собственный архив почтового индекса — в этом случае, обратите внимание , что есть несколько обязательных инструментов она должны состоять из (а именно: SCM API плагинов , GIT плагин , GIT клиент плагин , Environment File Plugin ) и все они должны быть помещены в папку плагинов внутри архива.
- Следующий раздел кода загружает и извлекает другой требуемый пакет ( jobs.zip ), который установит задания Jenkins в соответствии с данными внутри.
“curl -fsSL file_url -o jobs.zip“,
“unzip -o jobs.zip >/dev/null 2>&1″,
Структура архива должна быть следующей: одна общая папка заданий , которая может включать несколько каталогов, названных в честь соответствующих составных заданий. Каждый из таких каталогов должен содержать файл config.xml (со всеми необходимыми конфигами, указанными внутри) и папку builds с пустым файлом legacyIds . Мы уже подготовили такой архив , который содержит настройки для создания заданий, посвященных каждому этапу предлагаемого жизненного цикла приложения:
Создать среду> Построить и развернуть> Тесты разработчика> Миграция в QA> Тесты QA> Миграция в производство
Обратите внимание, что если вы используете свой собственный путь к папке сценариев, вам нужно отредактировать задание Build and Deploy в нашем примере пакета, так как оно содержит определенное расположение файла внутри этого каталога:
<filePath>/opt/tomcat/demo/variables</filePath>
Все остальное может оставаться как есть, однако вы также можете отредактировать его или добавить свои собственные задания, если это необходимо.
5. Наконец, определите перезапуск сервера, чтобы применить все выполненные конфигурации.
“sudo /etc/init.d/tomcat restart >/dev/null 2>&1″
Будучи объединены вместе, все эти части кода будут автоматически выполнять практически все необходимые конфигурации Jenkins.
Таким образом, теперь вы можете поместить их в соответствующий раздел манифеста команд, как это было предложено выше — вы получите нечто похожее на следующее:
Нажмите кнопку « Сохранить», чтобы завершить работу, и добавьте свое дополнение в список уже доступных установок.
Включение дополнения
Наконец, чтобы сделать наш модуль доступным через панель мониторинга, найдите и выберите его в списке, нажмите кнопку « Опубликовать» выше и подтвердите это действие в появившемся всплывающем окне.
Теперь все готово, поэтому давайте просто посмотрим, насколько быстрой и простой становится реализация нашего подхода DevOps.
Новый опыт DevOps
Перейдите на панель управления Jelastic (для учетной записи, в которой работает среда Jenkins) и выполните следующие действия, чтобы подключить дополнение к соответствующему серверу приложений.
- Наведите указатель мыши на узел Tomcat 7 и щелкните появившийся значок надстроек, чтобы отобразить вкладку с тем же именем и списком подходящих подключаемых модулей.
Найдите свое дополнение ( в нашем случае это называется конфигурация Jenkins ) и установите его с помощью соответствующей кнопки.
- Дождитесь успешного завершения процесса и получите доступ к панели управления Jenkins (т. Е. Откройте свою среду в браузере ).
Как видите, у нас есть список уже подготовленных работ.
- Теперь вам нужно немного настроить каждое из этих действий, а именно:
- укажите ссылку на хранилище с вашим проектом для задания Build and Deploy
- установить правильные учетные данные в окне « Выполнить» для остальных заданий
Чтобы получить доступ к параметрам конкретного задания и изменить их, используйте параметр « Настроить контекстное меню» (можно вызвать с помощью щелчка правой кнопкой мыши) для требуемой записи:
Примечание. В качестве примера для данного руководства мы используем
- {dev_user} @ example.com — логин (адрес электронной почты) учетной записи пользователя dev
- {пароль} — пароль пользователя, указанный выше
- {cloud_domain} — доменное имя вашей платформы Jelastic
- Последнее, что осталось сделать, — это связать запуск первого задания из нашего цикла (т. Е. Создание среды ) с действием фиксации, которое произошло в хранилище. Как вы уже знаете из предыдущих руководств, это можно сделать с помощью опции Webhook — вот напоминание о рабочем процессе (например, с настройками репозитория GitHub ):
Это все! Теперь у вас есть полностью настроенный и готовый к работе комплекс интеграции, который ожидает только внесения изменений в проект, чтобы автоматически создать среду, развернуть новую версию приложения и переместить ее через набор необходимых шагов тестирования и перемещения , После этого ваше проверенное приложение появится на производстве.
А уже имея готовую подключаемую надстройку Jelastic для конфигурации Jenkins, вы можете быстро применить этот подход к любому из ваших проектов, развернув новый механизм непрерывной доставки за несколько щелчков мыши и внеся небольшие изменения.