Jenkins установка и настройка windows

Обновлено: 07.07.2024

В этом руководстве для начинающих мы познакомимся с Jenkins, сервером автоматизации CI/CD, а также запустим и автоматизируем процесс сборки простого проекта.

Вступление

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

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

Ключевые концепции Дженкинса

Чтобы понять, почему кто-то должен использовать Дженкинса, нам нужно понять, какие проблемы Дженкинс стремится решить.

Конвейер CI/CD

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

Все эти этапы , которые состоят из меньших этапов , их сроки и порядок должны быть определены как единый конвейер .

Архитектура Контроллера-Агента

Плагины

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

Соглашения об именовании

На протяжении всего жизненного цикла Дженкинса номенклатура немного менялась, в том числе из-за того, что определенная терминология может рассматриваться как оскорбительная.

Несмотря на то, что некоторые соглашения об именах были введены много лет назад, сообщество по-прежнему использует их взаимозаменяемо. Чтобы избежать путаницы, вот несколько синонимичных терминов:

Более старая Ведущая/Ведомая архитектура была переименована в Контроллер/Агент архитектура из-за негативных коннотаций терминологии.

Установка

Существует множество способов установки Дженкинса. Наряду с установками для конкретной платформы многие платформы облачного хостинга предлагают предварительно настроенные пакеты Jenkins. Существует также официальный образ докера , а также общий файл Java war .

В этом руководстве будет описан процесс установки в Ubuntu 20.04 , хотя этот процесс не сильно отличается для Windows, Mac или других дистрибутивов. Проверьте страницу загрузки Дженкинса для вашей конкретной машины (или облачной службы).

Установка JDK/JRE

Будучи написанным на Java, Дженкинсу для запуска требуется Среда выполнения Java . Обратите внимание , что для OpenJDK доступны только версии 8 и 11 поддерживаются. Если вы хотите создавать Java-приложения с помощью Jenkins, вам нужно будет установить JDK вместо только JRE .

Давайте продолжим и установим openjdk-11-jdk :

Обновление списка источников и установка с помощью apt

Дженкинс недоступен в официальном репозитории Linux, поэтому нам придется добавить его собственный репозиторий. Мы собираемся установить версию LTS ( Долгосрочная поддержка ), которая обновляется каждые 12 недель, согласно веб-сайту Дженкинса.

Для острия, если, например, вы хотите разрабатывать плагины, удалите часть -stable из первой и второй строк ниже:

Наконец, мы можем продолжить и зарегистрировать Дженкинса в качестве сервиса и запустить его через терминал:

Доступ к Дженкинсу из браузера

По умолчанию Дженкинс размещен на порту 8080 .

Если вы установили Jenkins на локальном компьютере, доступ к нему можно получить из браузера, перейдя по адресу localhost:8080 . Если вы установили его на виртуальной машине, выполнение команды ifconfig (часть net-tools ) покажет IP-адрес виртуальной машины в вашей локальной сети.

При первом запуске Дженкинса требуется скрытый пароль. Его можно найти в /var/lib/Дженкинс/секреты/начальный пароль администратора , написанный на сервере. Извлеките и введите его, чтобы продолжить:

На второй странице выберите опцию Установить предлагаемые плагины . Установка плагина рассматривается далее в этом руководстве. Дождитесь установки плагинов, создайте учетную запись администратора, настройте URL-адрес Дженкинса (в нашем случае мы оставим его на localhost:8080 ) для доступа других пользователей, и вам будет представлена Панель мониторинга :

Использование Дженкинса

Дженкинс-это большой и сложный проект, и мы рассмотрим большинство наиболее важных функций.

Для этого мы рассмотрим три примера рабочего процесса:

  • Использование браузера для создания проекта Maven с уведомлениями по электронной почте.
  • Подключение к репозиторию GitHub и создание нашего приложения Maven с помощью файла репозитория Дженкинса .
  • Используя jenkins-cli.jar Для выполнения повседневных задач, таких как управление заданиями, запуск сборок, проверка журналов и т.д. Из командной строки.

Мы будем использовать фиктивный проект Maven , созданный для этого руководства.

Простая Локальная Сборка

Установка плагинов

Перейдите к опции Управление плагинами в разделе Управление Дженкинсом :

Дождитесь установки плагина, прежде чем продолжить.

Настройка Maven

В разделе Управление Дженкинсом перейдите в раздел Глобальная конфигурация инструмента . Прокрутите страницу вниз и добавьте установку Maven. Сохраните новые изменения.

Настройка электронной почты

Перейдите в Настройка системы в Управление Дженкинсом . Перейдите вниз к Уведомлению по электронной почте и настройте адрес электронной почты, который будет использовать Дженкинс. Обратите внимание , что Google и многие другие сервисы требуют настройки паролей для конкретных приложений из соображений безопасности.

Создание проекта

Выберите Новый элемент на боковой панели, дайте своему проекту имя и отметьте его как Проект Maven , прежде чем нажать ОК :

Git Essentials

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

В нижней части настройте файл POM расположение и настройте дополнительный шаг post для отправки уведомлений по электронной почте. Обратите внимание, что в Unix-подобных системах Дженкинс создает отдельного пользователя Дженкинс , поэтому могут потребоваться права доступа.

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

Перейдите к параметру Вывод на консоль для получения более подробной информации:

Отслеживание репозитория GitHub и чтение файла Дженкинса

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

Чтобы продвинуть наши изменения вверх по течению или при работе с частным репозиторием, нам придется аутентифицировать Дженкинса в GitHub. Мы также будем указывать Дженкинсу в направлении файла Дженкинса , который обычно содержится в корневом каталоге репозитория.

Учетные данные GitHub

Чтобы безопасно получить доступ к GitHub, мы сгенерируем пару ключей , зарегистрируем закрытый ключ в Jenkins и запишем открытый ключ в список развертывания репозитория GitHub. Таким образом, мы можем иметь общедоступный код с открытым исходным кодом (или просто код, которым делятся коллеги), сохраняя при этом безопасность.

Для создания пары ключей мы будем использовать команду ssh-keygen :

Выберите, где хранить ключи, и установите пароль, если хотите.

Затем скопируйте закрытый ключ и перейдите на панель управления Дженкинса. Оттуда в разделе Управление Дженкинсом перейдите в Управление учетными данными -> Дженкинс -> Глобальные учетные данные -> Добавить учетные данные .

Теперь пришло время создать проект и настроить его.

Создание проекта

На панели мониторинга перейдите в Новый элемент -> Многоответвленный конвейер . Дайте ему название и продолжайте. В разделе Источники филиалов выберите git , укажите имя источника, введите адрес хранилища и выберите соответствующие учетные данные, которые мы только что добавили. Сохраните изменения и продолжайте.

Мы заставим наш проект прослушивать изменения в репозитории, прокрутив вниз Сканирование триггеров конвейера с несколькими ответвлениями и установив флажок, выбрав 1 минуту в качестве желаемого интервала. Нажмите сохранить .

Пока наш проект будет проверять только изменения в нашем репозитории Git. Давайте напишем файл Дженкинса , чтобы Дженкинс знал, что он должен делать.

Написание файла Дженкинса

Этот простой синтаксис очень удобочитаем и достаточно понятен. Мы определили конвейер, который может быть выполнен любым доступным агентом . Существует только один этап ( 'сборка' ), на котором будет запущена команда оболочки для создания нашего кода.

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

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

Служебные задачи в командной строке

Чтобы избежать использования браузера для повседневных задач, таких как запуск/остановка заданий, проверка вывода сборки на консоль или импорт/экспорт, нам нужно будет загрузить jenkins-cli.jar .

Он входит в комплект каждой установки Дженкинса:

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

Соединение прошло успешно. Давайте свяжемся с пользователем с более широкими правами доступа, чтобы иметь возможность управлять проектами, плагинами, сборками и т.д. Чтобы избежать ввода пароля в консоли, можно настроить маркер API.

Создание маркера API

Давайте создадим токен для нашего пользователя-администратора, выполним действия на изображении и скопируем полученный текст:

Чтобы указать пользователя, мы будем использовать параметр -auth , который получает параметры [ПОЛЬЗОВАТЕЛЬ:СЕКРЕТНЫЙ | @ФАЙЛ] . Давайте поместим наше имя пользователя:токен в файл с именем учетные данные , на который мы будем ссылаться при подключении.

Список заданий и запущенных сборок
Импорт/Экспорт Существующих Заданий

Все конфигурации в Jenkins определяются с помощью XML. Это позволяет легко повторно использовать существующие конфигурации или импортировать новые. Помимо определений проектов, глобальные конфигурации, такие как плагины и учетные данные, все написаны в XML.

jenkins-cli обеспечивает поддержку импорта и экспорта с помощью команд get-job и create-job , которые принимают XML в качестве параметра. Следующий код дублирует наш проект Maven в новый:

Вывод

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

Можете с самого начала установить JDK, Git for Windows и Android SDK Tools с настройками по дефолту.

Bonobo Git Server

Простой и лёгкий git сервер под собой требует установки IIS и ASP.MVC что включает MS SQL Server Express 2008

IIS Server

Тут ничего необычного, добавляем роль Web Server (IIS):

image

image

image

Попутно установится MS SQL Server 2008 Express и нас спросят пароль для УЗ sa. Надеюсь без надобности она более не потребуется:

image

image

Bonobo Git Server

Всё, теперь можно перейти к непосредственно развёртыванию git сервера. Разархивируем содержимое дистрибутива в wwwroot IIS-сервера и даём права УЗ IIS_IUSERS на модификацию каталога App_Data:

IIS wwwroot и права УЗ IIS_IUSERS на каталог App_Data

image

Запускаем IIS Manager и конвертируем в приложение BonoboGitServer:

image

image

Логин и пароль для первого входа admin/admin. У сервера не так много настроек (во всяком случае через web-интерфейс), можно например поменять язык интерфейса:

image

и создать новых пользователей, например developer и jenkins. Под первым мы будем работать сами, второй нужен будущему серверу сборок.

image

Создадим новый репозиторий и дадим права на него разработчику и сборщику (УЗ jenkins, на скрине нет, но он там должен быть если делать всё по порядку. )

image

Пример странички репозитория с заветным адресом .git. Т.к. я заходил на сервер из браузера на этой же машине в адресе у меня фигурирует localhost, но у вас может быть нормальное DNS-имя сервера или IP.

image

Можно создать какой-нибудь проект в Android Studio указать в качестве удалённой ветки адрес нашего репозитория. Всю эту локальную часть я пропущу.

image

Jenkins

Jenkins устанавливается из msi и особо ни о чём не спрашивает, в конце установки автоматически открывается страничка с адресом где нам нужно скопировать из файла initialAdminPassword и вставить пароль:

image

В дальнейшем пароль УЗ admin тоже можно поменять.

Пришла пора установить необходимые плагины и настроить сервер. Переходим в Manage Jenkins — Manage Plugins — Avaliable и отмечаем:

  • JDK Parameter Plugin
  • Git plugin
  • Android Emulator Plugin
  • Gradle plugin

image

После перезапуска Jenkins необходимо перейти в раздел Manage Jenkins — Configure System и прописать путь к Android SDK в двух местах:

image

И в самом низу этой же странички в Android SDK root:

image

Если данного параметра не появилось что-то не то с Android Emulator Plugin, возможно он просто не установился.

Далее перейти на страничку конфигурации Manage Jenkins — Global Tool Configuration проверить и при необходимости указать пути к компонентам:

С JDK всё прсто:

image


Git можно не трогать, если в переменной path указан путь к исполняемому файлу git и он доступен в командной строке то и Jenkins сможет его использовать:

image

image

Создание задачи на автоматическую сборку

В основном боковом меню Jenkins жмём New Item, придумываем название задачи с типом «Freestyle project» и жмём ок, попадаем в конфигурацию задачи. Не забываем поставить галочку Discard old builds а то наш сервер вскоре заполнится успешными билдами всех версий:

image

В разделе Source Code Management указываем URL репозитория git нашего проекта. Забегая вперёд, не заводим и не подставляем никакие учётные данные для доступа к репозиторию:

image

Будем собирать ветку master. Также можно настроить автоматическую сборку, в частности опрос репозитория ежеминутно и старт сборки в случае обнаружения новых коммитов. Отмечаем Poll SCM и пишем * * * * *:

image

В разделе build нажимаем Add build step и настраиваем сборку Gradle. Gradle version должен быть доступен тот, что мы указали в Global Tools Configurations. Пишем простой Task — «clean build». Это задачи, доступные нам в gradlew.bat tasks в корне проекта. Вы можете вызывать тут и другие задачи сборщика, в т.ч. с ключами.

image

Также добавляем одно Post-build Action — будем сохранять наши APK-шники — приложения Android. Так и пишем:

image

Сборка

Сохраняем и запускам сборку и видим что-то подобное, висим 10 минут и не можем достучатся в репозиторий:


Мы же никак не авторизовались в репозитории git! Добавление пары Login/Password в хранилище Jenkins (там где мы оставили -none- в Source Code Management) не сработало, как бы я не пробовал. Надо попробовать поискать другие пути.

Командная строка запускается от имени УЗ сеанса, Jenkins от имени System и ничего об этом не знает, в хранилище Credential Manager похоже что тоже не случится. Т.е. это не поможет:

image

Дополнительный поиск по сети дал несколько советов:

  • Перенос ssh-ключей из УЗ сеанса в system, которые я так и не смог найти;
  • Второй способ (Авторизация git), который сработал.
Авторизация git

Для этого нам потребуется PsExec.exe из набора утилит PsTools. С её помощью мы можем запустить cmd.exe из под System. Запускаем cmd.exe с повышенными правами и выполняем:


В новой консоли всё что нужно сделать это постучатся в нужный нам репозиторий, например попробовать в командной строке склонировать его. будут запрошены учётные данные:

image

С помощью которых Jenkins сможет обращаться к данному репозиторию. Это та самая УЗ, которую мы создавали при настройках Bonobo Git Server наряду с developer'ом. Если в дальнейшем потребуется изменить данные учётные данные придётся пройти процедуру повторно.

Нехватка компонентов и акцептов лицензий на компоненты Android SDK


В таком случае вам надо запустить с повышенными правами SDK Manager и установить недостающие компоненты:

Jenkins может быть установлен на платформе Windows или Unix, но мы сосредоточимся только на установке Windows.

Предпосылки:

Прежде чем приступить к установке Jenkins в вашей системе Windows, есть некоторые предварительные условия для установки Jenkins на ваш компьютер.

Требования к оборудованию:

  • Вам нужно минимум 256 МБ оперативной памяти на вашем компьютере или ноутбуке для установки Jenkins
  • Вам нужно как минимум 1 ГБ места на жестком диске для Jenkins.

Требования к программному обеспечению:

  • Поскольку Jenkins работает на Java, вам нужна либо последняя версия Java Development Kit (JDK), либо Java Runtime Environment (JRE).

Типы релизов

Jenkins выпускает два типа версий в зависимости от потребностей организации.

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

Долгосрочная поддержка релиза (LTS):

Долгосрочные релизы поддержки доступны каждые 12 недель. Они стабильны и широко тестируются. Этот выпуск предназначен для конечных пользователей.

Еженедельный выпуск:

Еженедельные выпуски доступны каждую неделю, исправляя ошибки в более ранней версии. Эти релизы предназначены для разработчиков плагинов.

Мы будем использовать релиз LTS, хотя процесс будет таким же, как и для еженедельного выпуска.

Как скачать Дженкинс?

Для успешной установки Jenkins необходимо выполнить следующие шаги:


Шаг 2) Перейдите в папку загрузки с локального компьютера и разархивируйте загруженный пакет. Дважды щелкните по разархивированному jenkins.msi . Вы также можете Jenkin, используя WAR (веб-приложение ARchive), но это не рекомендуется.


Шаг 3) На экране установки Jenkin нажмите Далее.


Шаг 4) Выберите место, где вы хотите установить экземпляр Jenkins (по умолчанию это C: \ Program Files (x86) \ Jenkins), затем нажмите кнопку Next .


Шаг 5) Нажмите на кнопку Установить.




Как разблокировать Дженкинс?

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

Шаг 1) После завершения процесса установки Jenkins откроется вкладка браузера с запросом начального пароля администратора. Чтобы получить доступ к Jenkins, вам нужно перейти по следующему пути в вашем веб-браузере.

Если вы можете получить доступ к указанному выше URL-адресу, это подтверждает, что Jenkins успешно установлен в вашей системе.


Шаг 2) Исходный пароль администратора должен быть найден в пути установки Jenkins (задается на шаге 4 в разделе Установка Jenkins).

Для расположения по умолчанию C: \ Program Files (x86) \ Jenkins, файл с именем initialAdminPassword можно найти в C: \ Program Files (x86) \ Jenkins \ secrets.

Однако, если был выбран пользовательский путь для установки Jenkins, вам следует проверить это местоположение для файла initialAdminPassword .


Шаг 3) Откройте выделенный файл и скопируйте содержимое файла initialAdminPassword .



Настроить Дженкинс

Вы также можете настроить свою среду Jenkins, выполнив следующие действия:


Jenkins начнет загружать и устанавливать все необходимые плагины, необходимые для создания новых рабочих мест Jenkins.


Примечание . Вы можете выбрать опцию «Выбрать подключаемые модули для установки» и выбрать подключаемые модули, которые хотите установить.


Шаг 2) После установки всех предложенных плагинов откроется панель «Создать первого администратора». Заполните все поля нужными реквизитами и нажмите кнопку « Сохранить и завершить ».




Ниже вы можете найти и запустить экземпляр Jenkins, готовый создать первые задания Jenkins:

Как заголовокЭта статья расскажет, как развернуть среду непрерывной интеграции с использованием Jenkins в среде Windows. Я написал эту статью, потому что в своей недавней работе я действительно столкнулся с некоторыми проблемами при обучении работе с Jenkins: большинство учебных материалов основаны на платформе Mac или Linux. Это была головная боль, и после некоторого нащупывания я наконец нашел способ под платформу Windows.


Выберите «Настроить глобальную безопасность» в списке справа и выберите «Разрешить пользователю регистрироваться», после чего вы можете заранее зарегистрировать учетную запись для авторизации. Если в будущем регистрация новой учетной записи управления не будет разрешена, снимите этот флажок.


Далее в разделе «Агентство» разверните агентское соглашение и выберите все из них. Если выбран здесь, «Java Web Start Agent» будет включен, в противном случае он будет невидимым при создании ведомого. (Чтобы использовать этот агент, вам также нужно заранее установить Java, а также загрузить и установить его с официального сайта Java)


Вернитесь к интерфейсу «Управление Jenkins», выберите «Управление узлами» и нажмите «Новый узел» для создания нового ведомого устройства. Здесь мы выбираем «Постоянный агент», или вы можете скопировать новый узел из существующего ведомого устройства. Введите имя, удаленный корневой каталог и метку и выберите метод запуска, как показано на рисунке. Удаленный каталог здесь используется для хранения запущенных файлов клиента Jenkins. Другие настройки по умолчанию в порядке:


Ну, здесь создан узел. Мы можем вернуться к интерфейсу управления узлами. На этом этапе вновь созданный узел не подключен. Вы можете посетить страницу Jenkins на другом сервере или локальном компьютере и нажать «Запустить», чтобы подключиться к узлу и установить его как Местный сервис. Если вы работаете в системе Win10, произойдет ошибка установки. Не беспокойтесь, перезапустите IE или этот Edge с правами администратора и снова посетите Jenkins, чтобы попытаться подключиться и установить. Когда вы почувствуете, что хотите включить эту установленную службу, сначала остановите службу, а затем введите «sc delete servicename» в командном окне cmd, чтобы удалить службу. Служебное имя можно просмотреть в свойстве правой кнопкой мыши службы.


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

Вернувшись на главную страницу Jenkins, нажмите «New Item», здесь я выберу «Freestyle Project». После редактирования названия и описания проекта мы можем определить явно устаревшую сборку. Здесь я определяю, как хранить сборку в течение 7 дней, и оговариваю, что сохраняется максимум 10 сборок.


Как упоминалось ранее, эта система CI реагирует на условия триггера, возвращаемые git, поэтому вам необходимо установить параметр для получения возвращенного ответа и указать узел, на котором будет выполняться эта задача сборки, то есть заполнить набор меток при создании узла:


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


В элементе управления исходным кодом мы выбираем Git, устанавливаем соответствующий URL-адрес проекта git, имя пользователя и пароль для доступа и выбираем мастер по умолчанию для ветви:


После получения кода выберите метод запуска. Если вы хотите опрашивать с регулярными интервалами, выберите «Опрос SCM» и установите интервал времени. Вы должны отвечать каждый раз при отправке. Здесь я выбираю удаленный запуск «Триггерных сборок» и устанавливаю значение токена для последующего использования.


В настоящее время нам нужно перейти на страницу настроек управления кодом веб-сайта Git, добавить «Хуки и сервисы» и включить «Запрос извлечения». Формат URL-адреса полезной нагрузки устанавливается в соответствии с форматом, предложенным для токена, указанного выше:


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

Вернитесь на страницу редактирования задания прямо сейчас, продолжайте вниз, нажмите «Добавить шаг сборки», вы можете увидеть в раскрывающемся списке, Jenkins поддерживает богатый язык сценариев. Здесь мы будем использовать Window Batch и Widows PowerShell. Напишите здесь свой сценарий обработки бизнеса и сохраните его. Например, выведите «Jenkins CI», введите «echo Jenkins CI» в пакетном окне Windows, сохраните его, и все готово.

Наконец, письмо должно быть отправлено автоматически после завершения сценария. Посмотрим, как это настроено:

Перед настройкой уведомлений по электронной почте нам нужно перейти в «Настроить систему», чтобы настроить базовую конфигурацию системы электронной почты.

Сначала введите адрес Jenkins и адрес электронной почты отправителя.


Затем установите почтовый сервер SMTP и некоторые значения по умолчанию, в том числе получателя, тему, содержимое и т. Д. Таким образом, простейшая настройка отправки почты завершена. Давайте настроим определенные почтовые уведомления позже.


Вернитесь на страницу редактирования задания, найдите «Действия после сборки» и выберите «Редактируемое уведомление по электронной почте». Установите фактического получателя, формат содержимого и тему по умолчанию. И установить содержимое по умолчанию, вы можете параметризовать и форматировать стиль содержимого с помощью переменных среды (здесь не поясняется).

Многие службы Azure используют подключаемые модули Jenkins. Поддержка некоторых таких подключаемых модулей будет прекращена 29 февраля 2024 г. В настоящее время для интеграции Jenkins со службами Azure рекомендуется использовать Azure CLI. Дополнительные сведения см. в статье Подключаемые модули Jenkins для Azure.

Чтобы автоматизировать этапы создания и тестирования приложения, вы можете использовать конвейер непрерывной интеграции и развертывания (CI/CD). В этом учебнике мы создадим конвейер CI/CD на виртуальной машине Azure, включая следующие задачи:

  • Создание виртуальной машины Jenkins
  • Установка и настройка Jenkins
  • Создание интеграции webhook между GitHub и Jenkins
  • Создание и активация заданий сборки Jenkins из фиксаций GitHub
  • Создание образа Docker для приложения
  • Проверка создания фиксацией GitHub образа Docker и изменения выполняющегося приложения

При работе с этим руководством используется интерфейс командной строки (CLI) в Azure Cloud Shell, который всегда обновлен до последней версии. Чтобы открыть Cloud Shell, выберите Попробовать в верхнем углу любого блока кода.

Если вы решили установить и использовать интерфейс командной строки локально, то для работы с этим руководством вам понадобится Azure CLI 2.0.30 или более поздней версии. Чтобы узнать версию, выполните команду az --version . Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Создание экземпляра Jenkins

В предыдущем руководстве Как настроить виртуальную машину Linux при первой загрузке вы узнали, как автоматизировать настройку виртуальной машины с помощью cloud-init. В этом учебнике используется файл cloud-init для установки Jenkins и Docker на виртуальной машине. Jenkins — это популярный сервер автоматизации с открытым исходным кодом, который легко интегрируется с Azure для обеспечения непрерывной интеграции и непрерывной поставки (CI/CD). Другие руководства по использованию Jenkins см. в документации Jenkins® в Azure.

В текущей оболочке создайте файл cloud-init-jenkins.txt и вставьте в него приведенную ниже конфигурацию. Например, создайте файл в Cloud Shell, не на локальном компьютере. Введите sensible-editor cloud-init-jenkins.txt , чтобы создать файл и просмотреть список доступных редакторов. Убедитесь, что весь файл cloud-init скопирован правильно, особенно первая строка:

Прежде чем создать виртуальную машину, выполните команду az group create, чтобы создать группу ресурсов. В следующем примере создается группа ресурсов с именем myResourceGroupJenkins в расположении eastus.

Теперь создайте виртуальную машину командой az vm create. Используйте параметр --custom-data , чтобы передать файл конфигурации cloud-init. Укажите полный путь к конфигурации cloud-init-jenkins.txt, если этот файл сохранен вне текущего рабочего каталога.

Создание и настройка виртуальной машины может занять несколько минут.

Чтобы разрешить веб-трафик к вашей виртуальной машине, используйте команду az vm open-port для открытия порта 8080 для трафика Jenkins и порта 1337 для приложения Node.js, которое используется для запуска примера приложения:

Настройка Jenkins

Чтобы получить доступ к экземпляру Jenkins, получите общедоступный IP-адрес виртуальной машины:

В целях безопасности для запуска установки Jenkins необходимо ввести первоначальный пароль администратора, хранящийся в текстовом файле на виртуальной машине. Используйте общедоступный IP-адрес, полученный на предыдущем шаге, чтобы настроить подключение SSH для виртуальной машины:

С помощью команды service проверьте, запущен ли сервер Jenkins:

Просмотрите initialAdminPassword для установки Jenkins и скопируйте его:

Если файл еще не доступен, подождите несколько минут, пока файл cloud-init не завершит установку Jenkins и Docker.

  • Щелкните Select plugins to install (Выбрать подключаемые модули для установки).
  • Выполните поиск по слову GitHub в текстовом поле вверху. Установите флажок для GitHub, а затем выберите Установить.
  • Создайте первого администратора. Введите имя пользователя, например admin, а затем укажите безопасный пароль. Наконец введите полное имя и адрес электронной почты.
  • Выберите Сохранить и завершить.
  • Когда настройка Jenkins будет завершена, щелкните Start using Jenkins (Начать работу с Jenkins).
    • Если веб-браузере отображает пустую страницу при запуске Jenkins, перезапустите службу Jenkins. В сеансе SSH введите sudo service jenkins restart , а затем обновите веб-браузера.

    Создание объекта webhook GitHub

    Чтобы настроить интеграцию с GitHub, откройте пример приложения Node.js Hello World из репозитория примеров Azure. Чтобы создать разветвление репозитория для своей учетной записи GitHub, нажмите кнопку Fork (Разветвление) в правом верхнем углу.

    Создание объекта webhook в созданном разветвлении

    Добавление объекта webhook GitHub в разветвление репозитория

    Создание задания Jenkins

    Чтобы система Jenkins реагировала на событие в GitHub, такое как фиксация кода, создайте задание Jenkins. Используйте URL-адреса для собственной вилки GitHub.

    На веб-сайте Jenkins щелкните Create new jobs (Создание заданий) на домашней странице.

    Тестирование интеграции GitHub

    Для проверки интеграции GitHub с Jenkins зафиксируйте изменение в разветвлении.

    Вернитесь к веб-интерфейсу пользователя GitHub, выберите разветвление репозитория и щелкните файл index.js. Щелкните значок карандаша и измените этот файл так, чтобы строка 6 выглядела следующим образом.

    Чтобы зафиксировать изменения, нажмите кнопку Commit changes (Зафиксировать изменения) внизу.

    Определение образа сборки Docker

    Чтобы увидеть, как приложение Node.js выполняется в зависимости от фиксаций GitHub, мы создадим образ Docker для выполнения приложения. Образ строится на основе файла Dockerfile, определяющего конфигурацию контейнера, в котором выполняется приложение.

    Измените путь SSH-подключения к виртуальной машине, задав каталог рабочей области Jenkins, имя которого соответствует заданию, созданному на предыдущем шаге. В текущем примере это будет HelloWorld.

    Создайте файл в этом каталоге рабочей области с sudo sensible-editor Dockerfile и вставьте следующее содержимое. Убедитесь, что весь файл Dockerfile скопирован правильно, особенно первая строка:

    Этот файл Dockerfile использует базовый образ Node.js с помощью Alpine Linux, предоставляет порт 1337, по которому выполняется приложение Hello World, а затем копирует файлы приложения и инициализирует его.

    Создание правил сборки Jenkins

    Вернитесь в экземпляр Jenkins и выберите задание, созданное на предыдущем шаге. Щелкните Configure (Настройка) в левой части и прокрутите страницу вниз до раздела Build (Сборка).

    Удалите существующий шаг сборки echo "Test" . Щелкните красный крест в верхнем правом углу поля существующего шага сборки.

    Щелкните Add build step (Добавить шаг сборки), а затем выберите Execute shell (Выполнение оболочки).

    В поле Command (Команда) введите следующие команды Docker. Затем нажмите кнопку Save (Сохранить):

    Шаги сборок Docker создают образ и помечают его номером сборки Jenkins, чтобы вы могли вести журнал образов. Любые существующие контейнеры, выполняющие приложение, будут остановлены, а затем удалены. Затем с помощью образа запускается новый контейнер, который выполняет ваше приложение Node.js в зависимости от последней фиксации в GitHub.

    Тестирование конвейера

    Чтобы увидеть весь конвейер в действии, снова измените файл index.js в разветвлении репозитория GitHub и нажмите кнопку Commit changes (Зафиксировать изменения). Новое задание запускается Jenkins в зависимости от объекта webhook для GitHub. Создание образа Docker и запуск вашего приложения в новом контейнере занимает несколько секунд.

    При необходимости снова получите общедоступный IP-адрес виртуальной машины:

    Запуск приложения Node.js

    Теперь внесите другое изменение в файл index.js в GitHub и зафиксируйте изменение. Подождите несколько секунд, пока завершится задание в Jenkins, а затем обновите веб-браузер, чтобы увидеть измененную версию приложения, выполняющегося в новом контейнере, следующим образом:

    Запуск приложения Node.js после другой фиксации GitHub

    Дальнейшие действия

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

    • Создание виртуальной машины Jenkins
    • Установка и настройка Jenkins
    • Создание интеграции webhook между GitHub и Jenkins
    • Создание и активация заданий сборки Jenkins из фиксаций GitHub
    • Создание образа Docker для приложения
    • Проверка создания фиксацией GitHub образа Docker и изменения выполняющегося приложения

    Перейдите к следующему руководству, чтобы узнать, как интегрировать Jenkins в Azure DevOps Services.

    Читайте также: