Руководство. Настройка среды Jenkins для включения непрерывной интеграции и непрерывного развертывания для приложения Java в Service Fabric
Это руководство представляет собой пятую часть цикла. В нем показано, как развернуть обновления в приложении с помощью Jenkins. В этом руководстве приложение Voting развертывается в кластере с помощью подключаемого модуля Jenkins для Service Fabric в сочетании с репозиторием GitHub, в котором размещено это приложение.
В пятой части цикла вы узнаете, как выполнять такие задачи:
- Развертывание контейнера Jenkins для Service Fabric на компьютере.
- Настройка среды Jenkins для развертывания в Service Fabric.
- Обновление приложения.
Из этого цикла руководств вы узнаете, как выполнять следующие задачи:
- Развертывание приложения Java служб Service Fabric Reliable Services в Azure.
- Развертывание и отладка приложения в локальном кластере.
- Развертывание приложения в кластере Azure.
- Настройка мониторинга и диагностики приложения
- Настройка процесса непрерывной интеграции и доставки
Необходимые компоненты
- Необходимо установить Git на локальный компьютер, используя страницу загрузки Git. Дополнительные сведения о Git см. в документации по Git.
- Необходимо иметь опыт работы с Jenkins.
- Необходимо создать учетную запись GitHub и уметь использовать GitHub.
- Необходимо установить Docker на компьютер.
Получение и развертывание образа контейнера Jenkins для Service Fabric
Jenkins можно настроить внутри или за пределами кластера Service Fabric. Ниже показано, как с помощью предоставленного образа Docker настроить его за пределами кластера. Тем не менее также можно использовать предварительно настроенную среду сборки Jenkins. Текущий образ контейнера поставляется вместе с установленным подключаемым модулем Service Fabric, готовым к работе с Service Fabric.
Примечание.
В следующем примере вытягивается общедоступный образ контейнера из Docker Hub. Мы рекомендуем выполнить проверку подлинности с учетной записью Docker Hub (docker login
) вместо выполнения анонимного запроса на вытягивание. Чтобы повысить надежность при использовании общедоступного содержимого, импортируйте образ и управляйте им в частном реестре контейнеров Azure. Узнайте больше о работе с общедоступными образами.
Получите образ контейнера Jenkins для Service Fabric:
docker pull rapatchi/jenkins:v10
. Этот образ предварительно установлен в подключаемом модуле Jenkins Service Fabric.Запустите образ контейнера из расположения, в котором хранятся сертификаты Azure, на подключенном локальном компьютере.
docker run -itd -p 8080:8080 -v /service-fabric-java-quickstart/AzureCluster rapatchi/jenkins:v10
Получите идентификатор экземпляра образа контейнера. Вы можете вывести список всех контейнеров Docker с помощью команды
docker ps –a
.Получите пароль своего экземпляра Jenkins, выполнив следующую команду:
docker exec [first-four-digits-of-container-ID] cat /var/jenkins_home/secrets/initialAdminPassword
Если идентификатор контейнера имеет значение 2d24a73b5964, используйте 2d24.
- Этот пароль необходим для входа на панель мониторинга Jenkins с портала
http://<HOST-IP>:8080
. - После первого входа можно создать учетную запись пользователя или пользоваться учетной записью администратора.
- Этот пароль необходим для входа на панель мониторинга Jenkins с портала
Настройте GitHub для работы с Jenkins, выполнив шаги, описанные в статье Generating a new SSH key and adding it to the ssh-agent (Создание ключа SSH и его добавление в агент SSH). Так как команды запускаются из контейнера Docker, необходимо следовать инструкциям для среды Linux.
Для создания SSH-ключа используйте инструкции, предоставленные GitHub. Затем добавьте SSH-ключ в учетную запись GitHub, в которой находится репозиторий.
В оболочке Jenkins или Docker (а не на узле) выполните команды, перечисленные в приведенной выше статье.
Чтобы войти в оболочку Jenkins с вашего узла, выполните следующие команды:
docker exec -t -i [first-four-digits-of-container-ID] /bin/bash
Убедитесь, что кластер или компьютер, где размещен образ контейнера Jenkins, имеет общедоступный IP-адрес, Наличие общедоступного IP-адреса позволяет экземпляру Jenkins получать уведомления от GitHub.
Создание и настройка задания Jenkins
Сначала необходимо создать репозиторий, который можно использовать для размещения проекта Voting на GitHub (если у вас его еще нет). До завершения работы с руководством репозиторий будет называться dev_test.
Создайте элемент на панели мониторинга Jenkins по адресу
http://<HOST-IP>:8080
.Введите имя элемента, например MyJob. Выберите проект в свободной форме и нажмите кнопку ОК.
Перейдите на страницу задания и щелкните Configure (Настройка).
a. В разделе общих сведений установите флажок напротив проекта GitHub и укажите URL-адрес этого проекта. Это URL-адрес, где размещено приложение Service Fabric на Java, в которое необходимо интегрировать процесс непрерывной интеграции и доставки Jenkins (например,
https://github.com/testaccount/dev_test
).b. В разделе Source Code Management (Управление исходным кодом) выберите Git. Укажите URL-адрес репозитория, где размещено приложение Service Fabric на Java, в которое необходимо интегрировать поток средств непрерывной интеграции и непрерывного развертывания Jenkins (например,
https://github.com/testaccount/dev_test.git
). Также здесь можно указать, какую ветвь необходимо создать (например, /master).Настройте свой Github (где размещен репозиторий), чтобы он мог обмениваться данными с Jenkins. Выполните указанные ниже действия.
a. Перейдите на страницу репозитория GitHub. Последовательно выберите пункты Settings (Параметры)>Integrations and Services (Интеграции и службы).
b. Выберите Add Service (Добавить службу), введите Jenkins и выберите Jenkins-Github plugin (Модуль Jenkins-Github).
c. Введите URL-адрес webhook для Jenkins (по умолчанию это должен быть
http://<PublicIPorFQDN>:8081/github-webhook/
). Добавьте или обновите службу.d. В ваш экземпляр Jenkins будет отправлено событие проверки. Рядом с веб-перехватчиком в GitHub должен появиться зеленый флажок. Это означает, что проект создается.
В разделе Build Triggers (Создание триггеров) выберите требуемый параметр сборки. В этом примере мы планируем инициировать создание сборки каждый раз, когда будет происходить отправка в репозиторий, поэтому выберите параметр GitHub hook trigger for GITScm polling (Обработчик триггера Github для опроса GITScm).
В раскрывающемся списке Add build step (Добавить шаг сборки) раздела Build (Создание) выберите параметр Invoke Gradle Script (Вызов скрипта Gradle). В появившемся мини-приложении откройте расширенное меню и укажите путь к корневому скрипту сборки вашего приложения. Этот скрипт выбирает build.gradle по указанному пути и действует соответствующим образом.
В раскрывающемся списке Post-Build Actions (Действия после сборки) выберите Deploy Service Fabric Project (Развернуть проект Service Fabric). Здесь необходимо предоставить сведения о кластере, где будет развернуто приложение Service Fabric, скомпилированное с помощью Jenkins, Путь к сертификату ведет в расположение, в котором был подключен том (/tmp/myCerts).
Кроме того, можно предоставить дополнительные сведения, необходимые для развертывания приложения. Ниже приведен снимок экрана с примером дополнительных сведений о приложении.
Примечание.
Если образ контейнера Jenkins развертывается с помощью Service Fabric, можно использовать тот же кластер, на котором размещается приложение-контейнер Jenkins.
Нажмите кнопку Сохранить.
Обновление имеющегося приложения
Обновите заголовок HTML в файле VotingApplication/VotingWebPkg/Code/wwwroot/index.html, использовав Service Fabric Voting Sample V2.
<div ng-app="VotingApp" ng-controller="VotingAppController" ng-init="refresh()"> <div class="container-fluid"> <div class="row"> <div class="col-xs-8 col-xs-offset-2 text-center"> <h2>Service Fabric Voting Sample V2</h2> </div> </div> </div> </div>
Обновите версию ApplicationTypeVersion и ServiceManifestVersion до версии 2.0.0 в файле Voting/VotingApplication/ApplicationManifest.xml.
<?xml version="1.0" encoding="utf-8" standalone="no"?> <ApplicationManifest xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="VotingApplicationType" ApplicationTypeVersion="2.0.0"> <Description>Voting Application</Description> <ServiceManifestImport> <ServiceManifestRef ServiceManifestName="VotingWebPkg" ServiceManifestVersion="2.0.0"/> </ServiceManifestImport> <ServiceManifestImport> <ServiceManifestRef ServiceManifestName="VotingDataServicePkg" ServiceManifestVersion="1.0.0"/> </ServiceManifestImport> <DefaultServices> <Service Name="VotingWeb"> <StatelessService InstanceCount="1" ServiceTypeName="VotingWebType"> <SingletonPartition/> </StatelessService> </Service> <Service Name="VotingDataService"> <StatefulService MinReplicaSetSize="3" ServiceTypeName="VotingDataServiceType" TargetReplicaSetSize="3"> <UniformInt64Partition HighKey="9223372036854775807" LowKey="-9223372036854775808" PartitionCount="1"/> </StatefulService> </Service> </DefaultServices> </ApplicationManifest>
Обновите поле Версия в ServiceManifest и полеВерсия в теге CodePackage в файле Voting/VotingApplication/VotingWebPkg/ServiceManifest.xml до версии 2.0.0.
<CodePackage Name="Code" Version="2.0.0"> <EntryPoint> <ExeHost> <Program>entryPoint.sh</Program> </ExeHost> </EntryPoint> </CodePackage>
Чтобы инициализировать задание Jenkins, выполняющее обновление приложения, отправьте новые изменения в репозиторий GitHub.
В Service Fabric Explorer нажмите раскрывающийся список Приложения. Чтобы увидеть состояние обновления, нажмите вкладку Upgrades in Progress (Выполняемые обновления).
Теперь при доступе к http://<Host-IP>:8080 приложение Voting со всеми функциями настроено и работает.
Следующие шаги
Из этого руководства вы узнали, как:
- Развертывание контейнера Jenkins для Service Fabric на компьютере.
- Настройка среды Jenkins для развертывания в Service Fabric.
- Обновление приложения.
- Просмотрите другие примеры Java.