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):
Попутно установится MS SQL Server 2008 Express и нас спросят пароль для УЗ sa. Надеюсь без надобности она более не потребуется:
Bonobo Git Server
Всё, теперь можно перейти к непосредственно развёртыванию git сервера. Разархивируем содержимое дистрибутива в wwwroot IIS-сервера и даём права УЗ IIS_IUSERS на модификацию каталога App_Data:
IIS wwwroot и права УЗ IIS_IUSERS на каталог App_Data
Запускаем IIS Manager и конвертируем в приложение BonoboGitServer:
Логин и пароль для первого входа admin/admin. У сервера не так много настроек (во всяком случае через web-интерфейс), можно например поменять язык интерфейса:
и создать новых пользователей, например developer и jenkins. Под первым мы будем работать сами, второй нужен будущему серверу сборок.
Создадим новый репозиторий и дадим права на него разработчику и сборщику (УЗ jenkins, на скрине нет, но он там должен быть если делать всё по порядку. )
Пример странички репозитория с заветным адресом .git. Т.к. я заходил на сервер из браузера на этой же машине в адресе у меня фигурирует localhost, но у вас может быть нормальное DNS-имя сервера или IP.
Можно создать какой-нибудь проект в Android Studio указать в качестве удалённой ветки адрес нашего репозитория. Всю эту локальную часть я пропущу.
Jenkins
Jenkins устанавливается из msi и особо ни о чём не спрашивает, в конце установки автоматически открывается страничка с адресом где нам нужно скопировать из файла initialAdminPassword и вставить пароль:
В дальнейшем пароль УЗ admin тоже можно поменять.
Пришла пора установить необходимые плагины и настроить сервер. Переходим в Manage Jenkins — Manage Plugins — Avaliable и отмечаем:
- JDK Parameter Plugin
- Git plugin
- Android Emulator Plugin
- Gradle plugin
После перезапуска Jenkins необходимо перейти в раздел Manage Jenkins — Configure System и прописать путь к Android SDK в двух местах:
И в самом низу этой же странички в Android SDK root:
Если данного параметра не появилось что-то не то с Android Emulator Plugin, возможно он просто не установился.
Далее перейти на страничку конфигурации Manage Jenkins — Global Tool Configuration проверить и при необходимости указать пути к компонентам:
С JDK всё прсто:
Git можно не трогать, если в переменной path указан путь к исполняемому файлу git и он доступен в командной строке то и Jenkins сможет его использовать:
Создание задачи на автоматическую сборку
В основном боковом меню Jenkins жмём New Item, придумываем название задачи с типом «Freestyle project» и жмём ок, попадаем в конфигурацию задачи. Не забываем поставить галочку Discard old builds а то наш сервер вскоре заполнится успешными билдами всех версий:
В разделе Source Code Management указываем URL репозитория git нашего проекта. Забегая вперёд, не заводим и не подставляем никакие учётные данные для доступа к репозиторию:
Будем собирать ветку master. Также можно настроить автоматическую сборку, в частности опрос репозитория ежеминутно и старт сборки в случае обнаружения новых коммитов. Отмечаем Poll SCM и пишем * * * * *:
В разделе build нажимаем Add build step и настраиваем сборку Gradle. Gradle version должен быть доступен тот, что мы указали в Global Tools Configurations. Пишем простой Task — «clean build». Это задачи, доступные нам в gradlew.bat tasks в корне проекта. Вы можете вызывать тут и другие задачи сборщика, в т.ч. с ключами.
Также добавляем одно Post-build Action — будем сохранять наши APK-шники — приложения Android. Так и пишем:
Сборка
Сохраняем и запускам сборку и видим что-то подобное, висим 10 минут и не можем достучатся в репозиторий:
Мы же никак не авторизовались в репозитории git! Добавление пары Login/Password в хранилище Jenkins (там где мы оставили -none- в Source Code Management) не сработало, как бы я не пробовал. Надо попробовать поискать другие пути.
Командная строка запускается от имени УЗ сеанса, Jenkins от имени System и ничего об этом не знает, в хранилище Credential Manager похоже что тоже не случится. Т.е. это не поможет:
Дополнительный поиск по сети дал несколько советов:
- Перенос ssh-ключей из УЗ сеанса в system, которые я так и не смог найти;
- Второй способ (Авторизация git), который сработал.
Авторизация git
Для этого нам потребуется PsExec.exe из набора утилит PsTools. С её помощью мы можем запустить cmd.exe из под System. Запускаем cmd.exe с повышенными правами и выполняем:
В новой консоли всё что нужно сделать это постучатся в нужный нам репозиторий, например попробовать в командной строке склонировать его. будут запрошены учётные данные:
С помощью которых 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 в созданном разветвлении
Создание задания 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-адрес виртуальной машины:
Теперь внесите другое изменение в файл index.js в GitHub и зафиксируйте изменение. Подождите несколько секунд, пока завершится задание в Jenkins, а затем обновите веб-браузер, чтобы увидеть измененную версию приложения, выполняющегося в новом контейнере, следующим образом:
Дальнейшие действия
В рамках этого учебника мы настроили GitHub для выполнения задания сборки Jenkins согласно каждой фиксации кода, а затем развернули контейнер Docker для тестирования приложения. Вы ознакомились с выполнением следующих задач:
- Создание виртуальной машины Jenkins
- Установка и настройка Jenkins
- Создание интеграции webhook между GitHub и Jenkins
- Создание и активация заданий сборки Jenkins из фиксаций GitHub
- Создание образа Docker для приложения
- Проверка создания фиксацией GitHub образа Docker и изменения выполняющегося приложения
Перейдите к следующему руководству, чтобы узнать, как интегрировать Jenkins в Azure DevOps Services.
Читайте также: