Jenkins є одним з популярних інструментів, що дозволяє реалізовувати підхід безперервної інтеграції (Continuous Integration, CI) і безперервного постачання (Continuous Delivery, CD) програмного забезпечення.
CI істотно полегшує інтеграцію розрізнених копії проекту з основною гілкою розробки, дозволяє налаштовувати автоматичну збірку проекту і запускати тести.
CD забезпечує в автоматичному режимі поставку і розгортання результатів збірки на цільових серверах.
У цій статті ми розглянемо, як встановити Jenkins, і на прикладі веб-додатки на Java покажемо, як автоматизувати процес складання та поставки його на веб-сервер Jetty.
Вихідний код веб-додатки лежить в git-репозиторії, а як інструмент збирання використовується Maven.
вимоги
- Сервер Ubuntu 16.04 x64 (ми використовували наступну конфігурацію: Ubuntu 16.04 64 bit RAM 512Mb і SSD 20 Гб);
- Користувач з root-правами.
Крок 1. Встановлення Jenkins
Заходимо під root-користувачем і виконуємо в командному рядку Ubuntu наступні команди:
Після установки система автоматично запустить сервіс Jenkins. Перевіряємо його статус за допомогою команди:
Як бачимо, сервіс запущений і перебувати в активному статусі. Якщо сервіс неактивний, то необхідно перевірити, чи вільний порт 8080 і вистачає оперативної пам'яті (Jenkins вимагає від 256MB до 1GB).
Крок 2. Встановлення Git
Перевіряємо встановлену версію:
Крок 3. Установка Maven
Для роботи Maven нам знадобиться встановити JDK:
По завершенні установки виконуємо перевірку:
Встановлюємо сам Maven:
Перевіряємо успішність установки:
Тут необхідно запам'ятати значення Maven home. У нашому випадку це / usr / share / maven. Цей шлях буде потрібен в подальшому для настройки Jenkins.
Крок 4. Налаштування Jenkins
Всі необхідні установки зроблені, і можна перейти до налаштування Jenkins.
Управління Jenkins здійснюється через веб-інтерфейс, за замовчуванням доступний на порту 8080:
Якщо інтерфейс не з'явився, то необхідно відкрити порт 8080 і перевірити статус роботи сервісу Jenkins.
Для продовження налаштування нам буде потрібно ввести пароль адміністратора, який зберігається в файл / var / lib / jenkins / secrets / initialAdminPassword.
Копіюємо пароль і виходимо з файлу за допомогою команду
Скопійований пароль вставляємо в поле введення і натискаємо "Продовжити".
На наступному кроці нам необхідно вибрати режим установки плагінів, які будуть встановлені разом з Jenkins. Вибираємо Install suggested plugins:
Після установки всіх плагінів створюємо профіль адміністратора: Ім'я користувача і пароль запам'ятовуємо для подальшої роботи.Натискаємо "Продовжити". На екрані з'явиться повідомлення, яке свідчить про готовність Jenkins до роботи:
На цьому основна настройка закінчена. Натискаємо на кнопку "Start using Jenkins" і переходимо в робочу панель Jenkins.
Крок 5. Налаштування Maven в Jenkins
Jenkins не завжди розпізнає встановлений в системі Maven, тому його потрібно вказати вручну.
Вибираємо "Налаштувати Jenkins" в лівому меню:
Переходимо до "Global Tool Configuration"
У вікні шукаємо розділ Maven і натискаємо на кнопку "Додати". Відкриваються поля для введення:
Вводимо довільне ім'я і шлях до настановної папки Maven home, яку ми здобули на 3-му кроці під час перевірки версії. Знімаємо прапорець Install automatically і зберігаємо.
Щоб зміни вступили в силу, перезапускаємо Jenkins:
Крок 6. Створення автоматичного складання
Після перезавантаження відкриваємо знову веб-інтерфейс Jenkins і заходимо під обліковим записом адміністратора, яку ми створювали на етапі налаштування:
У вікні натискаємо на посилання "Створіть нову задачу"
Вводимо назву проекту, вибираємо "Створити задачу з вільною конфігурацією" і натискаємо "ОК" внизу сторінки.
На вкладці General знаходимо розділ "Управління вихідним кодом" і вибираємо Git. Система пропонує ввести нам URL Git сховища. Вводимо його:
Якщо сховище приватний, то система видасть помилку про те, що немає доступ до сховища.
Додаємо логін і пароль в підрозділі Credentials. Вибираємо зі списку "Jenkins":
У вікні вводимо Username і Password:
Додаємо і вибираємо зі списку створені credentials:
Помилка доступу більше не виводиться:
Після того, як ми вказали репозиторій з якого необхідно отримувати вихідний код, переходимо до налаштування збірки.
Знаходимо розділ "Збірка", натискаємо "Додати крок збірки" і вибираємо зі списку "Викликати мети Maven верхнього рівня"
Вставляємо в поле "Цілі" команди для складання maven-проекту.
Результат складання буде зберігатися в папці / var / lib / jenkins / workspace / Lolipop / target /, де Lolipop - назва нашого проекту. В даному прикладі результатом збірки буде готовий до розгортання war-файл.
Як приклад розглянемо, яким чином автоматизувати процес розгортання war-файлу на веб-сервер Jetty, який працює на цій же машині.
Про Jetty і його установці можна більш детально прочитати тут.
Додамо ще один крок збірки, який буде копіювати war файл в папку webapps Jetty і перезапускати його. На цей раз обираємо зі списку "Виконати команду shell".
На цьому настройка збірки закінчена, натискаємо "Зберегти" і переходимо до запуску.
Крок 7. Запуск збірки
Для запуску збірки в меню вибираємо "Зібрати зараз". Після цього в лівому нижньому кутку в розділі "Історія збірок" з'явиться індикатор процесу складання з датою і часом запуску:
Під час складання Jetty буде виконувати послідовно наступні завдання:
Якщо збірка завершилася з помилкою, то маркер буде червоного кольору, а якщо успішно, то синього.
Натиснувши на номер збірки і перейшовши в лівому меню в розділ Console Output, можна відстежити зневаджувальної збірки:
Автоматичне прибирання і доставка на веб-сервер налаштована. Тепер ми можемо запускати її в потрібний момент за допомогою кнопки "Зібрати зараз". Якщо у вас кілька серверів викладки з різними конфігураціями, ви можете налаштувати збірку під кожну викладку.
Крок 8. Як змінити порт подключеніяJenkins
У ряді випадків порт 8080 зайнятий або його необхідно звільнити під інші сервіси. У розглянутому прикладі Jetty за замовчуванням запускається на порту 8080.
Щоб Jenkins підключався до іншого порту, в файлі etc / default / jenkins потрібно змінити значення змінної HTTP_PORT на бажаний порт і перезапустити сервіс Jenkins.
висновок
Jenkins підтримує технології для роботи з різними системами контролю версій, включаючи Git, CVS, Subversion, Clearcase і Mercurial, може збирати проекти на Ant, Maven і Gradle, а також виконувати команди Windows, shell-скрипти і відправляти повідомлення про стан збирання в автоматичному режимі .
Завдяки такому різноманітному інструментарію Jenkins можна застосовувати на проектах з різними технологіями і будь-якої складності.
Jenkins також підтримує тригери збірки, які можуть викликати збірку за певним розкладом або події.
Всі ці переваги роблять Jenkins незамінним інструментом при побудові процесу розробки.