bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward

Налаштування Jenkins на виділеному сервері

calendar_month March 25, 2025 schedule 10 хв. читання visibility 449 переглядів
person
Valebyte Team
Налаштування Jenkins на виділеному сервері
summarize

TL;DR

  • ['Виділений сервер виключає конкуренцію за ресурси, прискорюючи збірку великих і паралельних проектів.', 'Повний контроль над середовищем дозволяє вибирати версії ОС, Java, Git і Docker під конкретні завдання.', 'Свій сервер дозволяє гнучко налаштувати фаєрвол, VPN і політики безпеки під корпоративні стандарти.', 'Ресурси (CPU, RAM) легко масштабуються, а нові агенти збірки додаються без лімітів провайдерів.']

Налаштування Jenkins на виділеному сервері

Привіт, колеги! Сьогодні ми поговоримо про розгортання одного з найпотужніших інструментів для автоматизації процесів CI/CD — Jenkins — на виділеному сервері. Якщо ви шукаєте спосіб отримати повний контроль над вашим середовищем безперервної інтеграції та доставки, оптимізувати продуктивність для ресурсомістких збірок та забезпечити максимальну безпеку, то встановлення Jenkins на власну залізяку або потужний VPS, як ті, що пропонує Valebyte, — це саме те рішення, яке дозволить вам досягти цих цілей. Це не просто встановлення софту; це фундамент для стабільної, масштабованої та високопродуктивної інфраструктури автоматизації, що дозволяє вам гнучко налаштовувати кожен аспект процесу CI/CD під потреби ваших проектів.

У цій статті ми пройдемося по всім ключовим етапам: від підготовки сервера і базової установки до налаштування безпеки, інтеграції з веб-сервером і створення першого завдання. Наша мета — не просто дати набір команд, а пояснити, чому ми робимо саме так, щоб ви могли впевнено адаптувати ці знання під свої унікальні вимоги і проекти.

Чому виділений сервер для Jenkins?

A stylized illustration of a powerful dedicated server rack with glowing lights, subtly incorporating elements of the Jenkins butler icon, symbolizing high performance, control, and automation for CI/CD.

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

  • Повний контроль: Ви самі вибираєте операційну систему, версії необхідного програмного забезпечення (Java, Git, Docker), управляєте всіма системними ресурсами і політиками безпеки. Ніяких обмежень, що накладаються хмарними платформами або загальними хостингами.
  • Оптимізована продуктивність: Виділені ресурси означають, що Jenkins не буде конкурувати за процесорний час, оперативну пам'ять або дискові операції введення/виведення з іншими сервісами. Це критично важливо для швидких і стабільних збірок, особливо при роботі з великими проектами або безліччю паралельних завдань.
  • Підвищена безпека: Можливість реалізувати специфічні для вашої організації політики безпеки, налаштувати фаєрвол, VPN-доступ, системи виявлення вторгнень та інші заходи захисту, відповідні найсуворішим корпоративним стандартам.
  • Гнучка масштабованість: У міру зростання ваших проектів ви зможете легко масштабувати ресурси сервера (додати CPU, RAM, збільшити обсяг диска) або інтегрувати додаткові агенти збірки, не прив'язуючись до тарифних планів хмарних провайдерів.
  • Економічна ефективність: У довгостроковій перспективі, для великих обсягів роботи або постійного навантаження, виділений сервер часто виявляється більш економічним рішенням, ніж оплата за мірою використання в хмарних CI/CD-сервісах.

Підготовка сервера: Що потрібно знати і мати

Перш ніж ми почнемо, переконайтеся, що ваш виділений сервер відповідає мінімальним вимогам і у вас є все необхідне для комфортної роботи:

Потрібен потужний сервер для Jenkins?

Забезпечте стабільну і швидку роботу Jenkins з нашими виділеними серверами. Отримайте повний контроль і високу продуктивність для ваших проектів. — від €5.99/міс.

Вибрати сервер →
  • Операційна система: Рекомендуємо використовувати актуальні LTS-версії Ubuntu Server (20.04/22.04) або Debian (11/12). Інструкції будуть орієнтовані на apt-based дистрибутиви.
  • Мінімальні ресурси: Для базової установки і декількох одночасних збірок буде потрібно мінімум 2 ядра CPU, 4 ГБ RAM і 50 ГБ SSD-диска. Для серйозних проектів з великою кількістю паралельних завдань, складними збірками або об'ємними артефактами буде потрібно значно більше.
  • SSH-доступ: До серверу з правами sudo. Це стандарт для адміністрування.
  • Java Development Kit (JDK): Jenkins написаний на Java, тому наявність сумісного JDK — обов'язкова умова. Рекомендується OpenJDK 11 або 17.
  • Відкритий порт: За замовчуванням Jenkins працює на порту 8080. Переконайтеся, що цей порт відкритий у вашому фаєрволі. Пізніше ми налаштуємо зворотний проксі на стандартні порти 80/443.
rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Установка Java Development Kit (JDK)

Якщо у вас ще не встановлено JDK, почнемо з нього. Для більшості сучасних систем рекомендується OpenJDK 11 або 17. Ми будемо використовувати OpenJDK 11, так як він добре протестований з Jenkins.

sudo apt update
sudo apt install openjdk-11-jdk -y

Після установки переконаємося, що Java коректно інстальована і доступна в системі:

java -version

Висновок повинен бути схожий на наступний, що вказує на OpenJDK 11:

openjdk version "11.0.21" 2023-10-17
OpenJDK Runtime Environment (build 11.0.21+9-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.21+9-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)

Установка Jenkins на Debian/Ubuntu

Тепер перейдемо безпосередньо до установки Jenkins. Ми додамо офіційний репозиторій Jenkins, щоб завжди мати доступ до актуальних і стабільних версій.

  1. Імпортуємо GPG-ключ репозиторію Jenkins:
    Для сучасних систем (Ubuntu 22.04+, Debian 11+), де apt-key вважається застарілим, використовуйте наступний метод:
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /etc/apt/keyrings/jenkins-keyring.asc > /dev/null
            
    Якщо ви використовуєте більш стару систему або віддаєте перевагу старому методу (хоча він менш безпечний і не рекомендований):
    wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
            
  2. Додаємо репозиторій Jenkins в список джерел apt:
    Для сучасного методу з keyrings:
    sudo sh -c 'echo deb [signed-by=/etc/apt/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
            
    Для старого методу з apt-key:
    sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
            
  3. Оновлюємо список пакетів і встановлюємо Jenkins:
    sudo apt update
    sudo apt install jenkins -y
            

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

sudo systemctl status jenkins

Якщо все добре, ви побачите статус active (running).

Налаштування фаєрвола

Переконайтеся, що порт 8080 відкритий у вашому фаєрволі. Якщо ви використовуєте UFW (Uncomplicated Firewall), виконайте:

sudo ufw allow 8080
sudo ufw enable # Якщо UFW не був включений
sudo ufw status # Перевірити поточні правила

Первинне налаштування Jenkins через веб-інтерфейс

Тепер, коли Jenkins встановлений і запущений, пора отримати до нього доступ через веб-браузер. Відкрийте http://ВАШ_IP_СЕРВЕРА:8080.

Вас зустріне сторінка "Unlock Jenkins". Для продовження потрібно ввести початковий адміністративний пароль, який знаходиться в спеціальному файлі на сервері. Отримати його можна наступною командою:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Скопіюйте цей довгий пароль і вставте його у відповідне поле в браузері. Натисніть "Continue".

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

На наступному кроці вам запропонують встановити плагіни. Рекомендую вибрати "Install suggested plugins". Це встановить базовий набір плагінів, необхідний для більшості завдань CI/CD (Git, Pipeline, SSH і т.д.). Ви завжди зможете додати або видалити плагіни пізніше через інтерфейс управління.

Створення першого адміністратора

Після установки плагінів вам буде запропоновано створити першого адміністративного користувача. Це дуже важливий крок для безпеки! Не використовуйте стандартне ім'я admin, придумайте унікальне ім'я користувача і надійний пароль. Заповніть решту полів і натисніть "Save and Finish".

Нарешті, натисніть "Start using Jenkins". Вітаю, ви увійшли в панель управління Jenkins!

rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Налаштування зворотного проксі і SSL (Nginx)

Працювати з Jenkins безпосередньо на порту 8080 не дуже зручно і, що важливіше, небезпечно для продакшн-середовища. Наполегливо рекомендую налаштувати зворотний проксі (наприклад, Nginx) і SSL/TLS-шифрування. Це дозволить отримати доступ до Jenkins по стандартних портах 80/443, використовувати доменне ім'я і забезпечити безпеку всього трафіку.

Установка Nginx

sudo apt install nginx -y
sudo ufw allow 'Nginx Full' # Відкриваємо порти 80 і 443 для Nginx

Конфігурація Nginx для Jenkins

Створимо новий конфігураційний файл для нашого Jenkins-інстанса. Наприклад, /etc/nginx/sites-available/jenkins.conf:

sudo nano /etc/nginx/sites-available/jenkins.conf

Вставте наступний код, замінивши your_domain.com на ваш реальний домен. Переконайтеся, що ваш домен вже вказує на IP-адресу сервера.

server {
    listen 80;
    listen [::]:80;
    server_name your_domain.com; # Замініть на ваш домен

location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect default;
        proxy_buffering off;
        proxy_request_buffering off;
        proxy_max_temp_file_size 0;
        client_max_body_size 100m; # Увеличьте, если планируете загружать большие файлы
    }
}

Тепер активуємо конфігурацію, створивши символічне посилання, та перезапустимо Nginx:

sudo ln -s /etc/nginx/sites-available/jenkins.conf /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default # Видаляємо дефолтну конфігурацію Nginx, якщо вона є
sudo nginx -t # Перевіряємо синтаксис конфігурації Nginx на помилки
sudo systemctl restart nginx

Тепер ви зможете отримати доступ до Jenkins за http://your_domain.com. Але нам потрібен SSL для безпечного з'єднання!

Налаштування SSL з Let's Encrypt

Для SSL ми використовуємо Certbot від Let's Encrypt. Це безкоштовно, просто в налаштуванні та надійно.

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com # Замініть на ваш домен

Дотримуйтесь інструкцій Certbot. Він автоматично налаштує Nginx для використання HTTPS, оновить ваш конфігураційний файл та встановить автоматичне продовження сертифікатів. Після цього ваш Jenkins буде доступний за захищеним протоколом https://your_domain.com.

Базові налаштування Jenkins та плагіни

Тепер, коли у нас є безпечний доступ, давайте зробимо декілька базових налаштувань, які покращать функціональність та зручність використання.

Управління плагінами

Перейдіть до Управління Jenkins -> Управління плагінами. Тут ви можете:

  • Доступні: Шукати та встановлювати нові плагіни з великого репозиторію Jenkins.
  • Встановлені: Переглядати, вимикати або видаляти вже встановлені плагіни.
  • Оновлення: Встановлювати оновлення для плагінів, що важливо для безпеки та нових функцій.

Декілька корисних плагінів, які варто розглянути (якщо не були встановлені за замовчуванням з "suggested plugins"):

  • Git: Обов'язковий для інтеграції з Git-репозиторіями.
  • Pipeline: Дозволяє створювати складні CI/CD конвеєри у вигляді коду (Jenkinsfile).
  • Docker Pipeline: Якщо ви плануєте використовувати Docker-контейнери у ваших збірках або для запуску агентів.
  • SSH Agent / SSH Slaves: Для безпечного підключення до віддалених серверів або агентів збірки по SSH.
  • Blue Ocean: Сучасний та інтуїтивно зрозумілий графічний інтерфейс для управління пайплайнами.

Порада: Після встановлення або оновлення плагінів Jenkins часто пропонує перезапустити себе. Це хороша практика для застосування змін.

Глобальні налаштування інструментів

В Управління Jenkins -> Глобальна конфігурація інструментів ви можете налаштувати шляхи до JDK, Maven, Gradle, Git, Docker та інших інструментів, які будуть використовуватися у ваших задачах. Це дозволяє Jenkins автоматично знаходити та використовувати потрібні версії інструментів.

Наприклад, для JDK ви можете вказати "Install automatically" (Jenkins сам завантажить та встановить потрібну версію) або задати шлях до вашої установки OpenJDK 11.

Створення вашої першої Jenkins Pipeline

Замість застарілих "Free-style projects" ми настійно рекомендуємо використовувати "Pipeline" — це сучасний підхід, який дозволяє описувати весь процес CI/CD в коді (Jenkinsfile), що зберігається поруч з вашим проектом в Git-репозиторії. Це забезпечує версіонування, повторюваність та значно полегшує спільну роботу та управління складними конвеєрами.

  1. На головній сторінці Jenkins натисніть "New Item" (або "Створити нову задачу").
  2. Введіть ім'я для вашої задачі (наприклад, MyFirstDeclarativePipeline) та виберіть тип "Pipeline". Натисніть "OK".
  3. На сторінці конфігурації прокрутіть до розділу "Pipeline".
  4. В полі "Definition" виберіть "Pipeline script" для простого прикладу, який ми вставимо прямо тут. В реальних проектах ви будете використовувати "Pipeline script from SCM" для читання Jenkinsfile з Git-репозиторію.
  5. Вставте наступний простий приклад декларативного пайплайна:
    pipeline {
        agent any // Указывает, что пайплайн может выполняться на любом доступном агенте
    
    ```html
    

    Ось приклад простого Jenkinsfile, який демонструє основні етапи CI/CD:

    
    pipeline {
        agent any
        stages {
            stage('Checkout Code') {
                steps {
                    echo 'Checking out source code...'
                    // Здесь обычно происходит клонирование вашего Git-репозитория
                    // git 'https://github.com/your-org/your-repo.git'
                }
            }
            stage('Build') {
                steps {
                    echo 'Building the application...'
                    // Здесь могли бы быть команды сборки, например:
                    // sh 'mvn clean install' // Для Maven-проектов
                    // sh 'npm install && npm run build' // Для Node.js-проектов
                }
            }
            stage('Test') {
                steps {
                    echo 'Running tests...'
                    // sh 'mvn test' // Запуск тестов
                    // sh 'npm test'
                }
            }
            stage('Deploy Staging') {
                steps {
                    echo 'Deploying to staging environment...'
                    // sh 'scp -r target/app.jar [email protected]_domain.com:/var/www/'
                }
            }
        }
        post {
            always {
                echo 'Pipeline finished.'
            }
            success {
                echo 'Pipeline completed successfully!'
            }
            failure {
                echo 'Pipeline failed. Check logs.'
            }
        }
    }
    
  6. Натисніть "Save".
  7. Тепер на сторінці вашої задачі в лівому меню натисніть "Build Now". Ви побачите, як Jenkins виконує стадії вашого пайплайну, а в "Stage View" зможете відстежувати прогрес візуально.

Це лише верхівка айсберга. В реальних проєктах Jenkinsfile буде набагато складнішим, інтегруючись з Git, Docker, Kubernetes, хмарними сервісами та іншими інструментами, але цей приклад дає базове розуміння.

rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Обслуговування та найкращі практики

Щоб ваш Jenkins-сервер працював стабільно, безпечно та ефективно, не забувайте про наступні рекомендації:

  • Резервне копіювання: Регулярно створюйте резервні копії директорії /var/lib/jenkins. Це серце вашого Jenkins-інстанса, що містить всі налаштування, плагіни, дані задач, історію збірок та дані користувачів. Без цього відновлення буде вкрай важким.
  • Оновлення: Своєчасно оновлюйте сам Jenkins та всі встановлені плагіни. Це не тільки додає нові функції та покращення, але й закриває виявлені вразливості безпеки.
  • Моніторинг: Слідкуйте за використанням ресурсів сервера (CPU, RAM, диск). Jenkins може бути достатньо ресурсомістким, особливо при паралельних збірках. Використовуйте такі інструменти, як htop, glances, Prometheus/Grafana.
  • Безпека: Окрім надійних паролів та SSL, розгляньте інтеграцію з централізованими системами аутентифікації (LDAP/Active Directory), якщо це застосовно. Регулярно перевіряйте журнал аудиту Jenkins на предмет підозрілої активності.
  • Управління агентами збірки: Для великих проєктів або проєктів з різними залежностями (наприклад, одні збираються на Java 11, інші на Java 17) розгляньте використання агентів збірки (Jenkins Agents). Це дозволяє розподіляти навантаження, ізолювати середовища збірки та масштабувати інфраструктуру CI/CD горизонтально.
  • Очищення старих збірок: Налаштуйте політику зберігання збірок для кожної задачі, щоб уникнути переповнення диска історією збірок та артефактами.

Висновки

Налаштування Jenkins на виділеному сервері — це потужний крок до повної автоматизації ваших процесів розробки та розгортання. Ви отримуєте максимальний контроль, продуктивність та безпеку, що особливо цінно для критично важливих проєктів та великих команд. Ми пройшлися по всьому шляху: від встановлення Java та самого Jenkins до налаштування безпечного доступу через Nginx з SSL та створення першої Pipeline-задачі. Пам'ятайте, що Jenkins — це гнучкий та потужний інструмент, який потребує регулярної уваги та оптимізації, але вкладені зусилля окупляться сторицею, значно прискорюючи ваш цикл розробки та підвищуючи якість випущеного продукту.

Якщо у вас виникнуть питання щодо налаштування, масштабування або знадобиться потужний та надійний виділений сервер для вашого Jenkins, звертайтесь до Valebyte — ми завжди готові допомогти вам з інфраструктурними рішеннями!

Шукаєте гнучке рішення для Jenkins?

Наші VPS-хостинги пропонують ідеальний баланс продуктивності та доступності. Масштабуйте ресурси по мірі росту ваших потреб.

Подивитись VPS →
```
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.