Шпаргалка по Jenkins

Изучите Jenkins с практическими лабораторными работами

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

Установка и Настройка

Установка на Linux

Установка Jenkins в системах Ubuntu/Debian.

# Обновить менеджер пакетов и установить Java
sudo apt update
sudo apt install fontconfig openjdk-21-jre
java -version
# Добавить GPG ключ Jenkins
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
# Добавить репозиторий Jenkins
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc]" \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
# Установить Jenkins
sudo apt update && sudo apt install jenkins
# Запустить службу Jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins

Windows и macOS

Установка Jenkins с помощью установщиков или менеджеров пакетов.

# Windows: Загрузить установщик Jenkins с jenkins.io
# Или использовать Chocolatey
choco install jenkins
# macOS: Использовать Homebrew
brew install jenkins-lts
# Или скачать напрямую с:
# https://www.jenkins.io/download/
# Запустить службу Jenkins
brew services start jenkins-lts

Настройка после установки

Первоначальная конфигурация и разблокировка Jenkins.

# Получить начальный пароль администратора
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
# Или для установок Docker
docker exec jenkins_container cat /var/jenkins_home/secrets/initialAdminPassword
# Доступ к веб-интерфейсу Jenkins
# Открыть http://localhost:8080
# Ввести начальный пароль администратора
# Установить рекомендуемые плагины или выбрать пользовательские плагины

Первоначальная настройка

Завершение мастера настройки и создание учетной записи администратора.

# После разблокировки Jenkins:
# 1. Установить рекомендуемые плагины (рекомендуется)
# 2. Создать первого пользователя-администратора
# 3. Настроить URL Jenkins
# 4. Начать использование Jenkins
# Проверить, что Jenkins запущен
sudo systemctl status jenkins
# Проверить логи Jenkins при необходимости
sudo journalctl -u jenkins.service

Основные Операции Jenkins

Доступ к Jenkins: Веб-интерфейс и Настройка CLI

Доступ к Jenkins через браузер и настройка инструментов CLI.

# Доступ к веб-интерфейсу Jenkins
http://localhost:8080
# Скачать Jenkins CLI
wget http://localhost:8080/jnlpJars/jenkins-cli.jar
# Проверить соединение CLI
java -jar jenkins-cli.jar -s http://localhost:8080 help
# Показать доступные команды
java -jar jenkins-cli.jar -s http://localhost:8080 help

Создание Задания: create-job / Веб-интерфейс

Создание новых сборочных заданий с помощью CLI или веб-интерфейса.

# Создать задание из XML-конфигурации
java -jar jenkins-cli.jar -auth user:token create-job my-job < job-config.xml
# Создать простое задание Freestyle через веб-интерфейс:
# 1. Нажать "New Item" (Новый элемент)
# 2. Ввести имя задания
# 3. Выбрать "Freestyle project"
# 4. Настроить шаги сборки
# 5. Сохранить конфигурацию

Список Заданий: list-jobs

Просмотр всех настроенных заданий в Jenkins.

# Показать все задания
java -jar jenkins-cli.jar -auth user:token list-jobs
# Показать задания, соответствующие шаблону
java -jar jenkins-cli.jar -auth user:token list-jobs "*test*"
# Получить конфигурацию задания
java -jar jenkins-cli.jar -auth user:token get-job my-job > job-config.xml

Управление Заданиями

Сборка Заданий: build

Запуск и управление сборками заданий.

# Собрать задание
java -jar jenkins-cli.jar -auth user:token build my-job
# Собрать с параметрами
java -jar jenkins-cli.jar -auth user:token build my-job -p PARAM=value
# Собрать и дождаться завершения
java -jar jenkins-cli.jar -auth user:token build my-job -s -v
# Собрать и следить за выводом консоли
java -jar jenkins-cli.jar -auth user:token build my-job -f
Викторина

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

Что делает флаг -s в команде jenkins-cli.jar build my-job -s?
Пропускает сборку
Ожидает завершения сборки (синхронно)
Показывает статус сборки
Останавливает сборку

Управление Заданиями: enable-job / disable-job

Включение или отключение заданий.

# Включить задание
java -jar jenkins-cli.jar -auth user:token enable-job my-job
# Отключить задание
java -jar jenkins-cli.jar -auth user:token disable-job my-job
# Проверить статус задания в веб-интерфейсе
# Перейти на панель управления заданием
# Искать кнопку "Disable/Enable" (Отключить/Включить)
Викторина

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

Что происходит, когда вы отключаете задание Jenkins?
Задание удаляется навсегда
Конфигурация задания сохраняется, но оно не будет запускаться автоматически
Задание перемещается в другую папку
Удаляется вся история сборок

Удаление Задания: delete-job

Удаление заданий из Jenkins.

# Удалить задание
java -jar jenkins-cli.jar -auth user:token delete-job my-job
# Массовое удаление заданий (с осторожностью)
for job in job1 job2 job3; do
  java -jar jenkins-cli.jar -auth user:token delete-job $job
done

Вывод Консоли: console

Просмотр логов сборки и вывода консоли.

# Посмотреть вывод консоли последней сборки
java -jar jenkins-cli.jar -auth user:token console my-job
# Посмотреть вывод консоли для конкретного номера сборки
java -jar jenkins-cli.jar -auth user:token console my-job 15
# Следить за выводом консоли в реальном времени
java -jar jenkins-cli.jar -auth user:token console my-job -f
Викторина

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

Что делает флаг -f в команде jenkins-cli.jar console my-job -f?
Принудительно останавливает сборку
Показывает только неудачные сборки
Следит за выводом консоли в реальном времени
Форматирует вывод как JSON

Управление Конвейерами (Pipeline)

Создание Конвейера

Создание и настройка конвейеров Jenkins.

// Базовый Jenkinsfile (Декларативный конвейер)
pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                echo 'Building application...'
                sh 'make build'
            }
        }

        stage('Test') {
            steps {
                echo 'Running tests...'
                sh 'make test'
            }
        }

        stage('Deploy') {
            steps {
                echo 'Deploying application...'
                sh 'make deploy'
            }
        }
    }
}

Синтаксис Конвейера

Общий синтаксис и директивы конвейера.

// Синтаксис Скриптового Конвейера (Scripted Pipeline)
node {
    stage('Checkout') {
        checkout scm
    }

    stage('Build') {
        sh 'make build'
    }

    stage('Test') {
        sh 'make test'
        junit 'target/test-results/*.xml'
    }
}
// Параллельное выполнение
stages {
    stage('Parallel Tests') {
        parallel {
            stage('Unit Tests') {
                steps {
                    sh 'make unit-test'
                }
            }
            stage('Integration Tests') {
                steps {
                    sh 'make integration-test'
                }
            }
        }
    }
}

Настройка Конвейера

Расширенная настройка конвейеров и опции.

// Конвейер с действиями после сборки (post-build actions)
pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                sh 'make build'
            }
        }
    }

    post {
        always {
            echo 'This always runs'
        }
        success {
            echo 'Build succeeded'
        }
        failure {
            echo 'Build failed'
            emailext subject: 'Build Failed',
                     body: 'Build failed',
                     to: 'team@company.com'
        }
    }
}

Триггеры Конвейера

Настройка автоматических триггеров конвейера.

// Конвейер с триггерами
pipeline {
    agent any

    triggers {
        // Опрос SCM каждые 5 минут
        pollSCM('H/5 * * * *')

        // Планирование, похожее на Cron
        cron('H 2 * * *')  // Ежедневно в 2 часа ночи

        // Триггер от вышестоящего задания
        upstream(upstreamProjects: 'upstream-job',
                threshold: hudson.model.Result.SUCCESS)
    }

    stages {
        stage('Build') {
            steps {
                sh 'make build'
            }
        }
    }
}

Управление Плагинами

Установка Плагина: CLI

Установка плагинов с помощью интерфейса командной строки.

# Установить плагин через CLI (требуется перезапуск)
java -jar jenkins-cli.jar -auth user:token install-plugin git
# Установить несколько плагинов
java -jar jenkins-cli.jar -auth user:token install-plugin \
  git maven-plugin docker-plugin
# Установить из файла .hpi
java -jar jenkins-cli.jar -auth user:token install-plugin \
  /path/to/plugin.hpi
# Показать установленные плагины
java -jar jenkins-cli.jar -auth user:token list-plugins
# Установка плагинов через plugins.txt (для Docker)
# Создать файл plugins.txt:
git:latest
maven-plugin:latest
docker-plugin:latest
pipeline-stage-view:latest
# Использовать инструмент jenkins-plugin-cli
jenkins-plugin-cli --plugins git maven-plugin docker-plugin

Основные Плагины

Часто используемые плагины Jenkins для различных целей.

# Плагины Сборки и SCM
git                    # Интеграция с Git
github                 # Интеграция с GitHub
maven-plugin          # Поддержка сборок Maven
gradle                # Поддержка сборок Gradle
# Плагины Конвейеров
workflow-aggregator   # Набор плагинов Pipeline
pipeline-stage-view   # Представление стадий конвейера
blue-ocean           # Современный UI для конвейеров
# Развертывание и Интеграция
docker-plugin        # Интеграция с Docker
kubernetes           # Развертывание в Kubernetes
ansible              # Автоматизация Ansible
# Качество и Тестирование
junit                # Отчеты о тестах JUnit
jacoco              # Покрытие кода
sonarqube           # Анализ качества кода

Управление Плагинами через Веб-интерфейс

Управление плагинами через веб-интерфейс Jenkins.

# Доступ к Менеджеру Плагинов:
# 1. Перейти в Manage Jenkins (Управление Jenkins)
# 2. Нажать "Manage Plugins" (Управление плагинами)
# 3. Использовать вкладки Available/Installed/Updates (Доступные/Установленные/Обновления)
# 4. Поиск плагинов
# 5. Выбрать и установить
# 6. Перезапустить Jenkins, если требуется
# Процесс обновления плагина:
# 1. Проверить вкладку "Updates" (Обновления)
# 2. Выбрать плагины для обновления
# 3. Нажать "Download now and install after restart" (Скачать сейчас и установить после перезапуска)

Управление Пользователями и Безопасность

Управление Пользователями

Создание и управление пользователями Jenkins.

# Включить безопасность Jenkins:
# 1. Manage Jenkins → Configure Global Security
# 2. Включить "Jenkins' own user database" (Собственная база данных пользователей Jenkins)
# 3. Разрешить пользователям регистрироваться (первоначальная настройка)
# 4. Установить стратегию авторизации
# Создание пользователя через CLI (требует соответствующих разрешений)
# Пользователи обычно создаются через веб-интерфейс:
# 1. Manage Jenkins → Manage Users
# 2. Нажать "Create User" (Создать пользователя)
# 3. Заполнить данные пользователя
# 4. Назначить роли/разрешения

Аутентификация и Авторизация

Настройка областей безопасности (security realms) и стратегий авторизации.

# Варианты настройки безопасности:
# 1. Security Realm (область безопасности - как пользователи проходят аутентификацию):
#    - Jenkins' own user database
#    - LDAP
#    - Active Directory
#    - Matrix-based security
#    - Role-based authorization
# 2. Authorization Strategy (стратегия авторизации):
#    - Anyone can do anything
#    - Legacy mode
#    - Logged-in users can do anything
#    - Matrix-based security
#    - Project-based Matrix Authorization

API Токены

Генерация и управление API токенами для доступа CLI.

# Генерация API токена:
# 1. Нажать на имя пользователя → Configure
# 2. Раздел API Token
# 3. Нажать "Add new Token" (Добавить новый токен)
# 4. Ввести имя токена
# 5. Сгенерировать и скопировать токен
# Использование API токена с CLI
java -jar jenkins-cli.jar -auth username:api-token \
  -s http://localhost:8080 list-jobs
# Безопасное хранение учетных данных
echo "username:api-token" > ~/.jenkins-cli-auth
chmod 600 ~/.jenkins-cli-auth

Управление Учетными Данными (Credentials)

Управление сохраненными учетными данными для заданий и конвейеров.

# Управление учетными данными через CLI
java -jar jenkins-cli.jar -auth user:token \
  list-credentials system::system::jenkins
# Создание учетных данных XML и импорт
java -jar jenkins-cli.jar -auth user:token \
  create-credentials-by-xml system::system::jenkins \
  < credential.xml
// Доступ к учетным данным в конвейерах
withCredentials([usernamePassword(
  credentialsId: 'my-credentials',
  usernameVariable: 'USERNAME',
  passwordVariable: 'PASSWORD'
)]) {
  sh 'docker login -u $USERNAME -p $PASSWORD'
}

Мониторинг Сборок и Устранение Неполадок

Статус Сборки и Логи

Мониторинг статуса сборки и доступ к подробным логам.

# Проверить статус сборки
java -jar jenkins-cli.jar -auth user:token console my-job
# Получить информацию о сборке
java -jar jenkins-cli.jar -auth user:token get-job my-job
# Мониторинг очереди сборки
# Веб-интерфейс: Главная панель Jenkins → Build Queue
# Показывает ожидающие сборки и их статус
# Доступ к истории сборок
# Веб-интерфейс: Job → Build History
# Показывает все предыдущие сборки со статусом

Информация о Системе

Получение системной информации Jenkins и диагностических данных.

# Системная информация
java -jar jenkins-cli.jar -auth user:token version
# Информация о узлах (агентах)
java -jar jenkins-cli.jar -auth user:token list-computers
# Консоль Groovy (только для администраторов)
# Manage Jenkins → Script Console
# Выполнение скриптов Groovy для получения системной информации:
println Jenkins.instance.version
println Jenkins.instance.getRootDir()
println System.getProperty("java.version")

Анализ Логирования

Доступ и анализ системных логов Jenkins.

# Расположение системных логов
# Linux: /var/log/jenkins/jenkins.log
# Windows: C:\Program Files\Jenkins\jenkins.out.log
# Просмотр логов
tail -f /var/log/jenkins/jenkins.log
# Настройка уровней логирования
# Manage Jenkins → System Log
# Добавить новый регистратор логов для определенных компонентов
# Общие расположения логов:
sudo journalctl -u jenkins.service     # Логи Systemd
sudo cat /var/lib/jenkins/jenkins.log  # Файл лога Jenkins

Мониторинг Производительности

Мониторинг производительности и использования ресурсов Jenkins.

# Встроенный мониторинг
# Manage Jenkins → Load Statistics
# Показывает утилизацию исполнителей с течением времени
# Мониторинг JVM
# Manage Jenkins → Manage Nodes → Master
# Показывает использование памяти, ЦП и системные свойства
# Тренды сборок
# Установить плагин "Build History Metrics"
# Просмотр трендов продолжительности сборок и показателей успеха
# Мониторинг использования диска
# Установить плагин "Disk Usage"
# Мониторинг места на диске для рабочих областей и артефактов сборок

Конфигурация и Настройки Jenkins

Глобальная Конфигурация

Настройка глобальных настроек Jenkins и инструментов.

# Глобальная Конфигурация Инструментов
# Manage Jenkins → Global Tool Configuration
# Настройка:
# - Установки JDK
# - Установки Git
# - Установки Maven
# - Установки Docker
# Системная Конфигурация
# Manage Jenkins → Configure System
# Установка:
# - URL Jenkins
# - Системное сообщение
# - # исполнителей (executors)
# - Quiet period (период ожидания)
# - Ограничения опроса SCM

Переменные Окружения

Настройка переменных окружения и системных свойств Jenkins.

# Встроенные переменные окружения
BUILD_NUMBER          # Номер сборки
BUILD_ID              # ID сборки
JOB_NAME             # Имя задания
WORKSPACE            # Путь к рабочей области задания
JENKINS_URL          # URL Jenkins
NODE_NAME            # Имя узла
# Пользовательские переменные окружения
# Manage Jenkins → Configure System
# Global properties → Environment variables
# Добавление пар ключ-значение для глобального доступа

Jenkins Configuration as Code (JCasC)

Управление конфигурацией Jenkins с помощью плагина JCasC.

# Файл конфигурации JCasC (jenkins.yaml)
jenkins:
  systemMessage: "Jenkins configured as code"
  numExecutors: 4
  securityRealm:
    local:
      allowsSignup: false
      users:
       - id: "admin"
         password: "admin123"
# Применение конфигурации
# Установить переменную окружения CASC_JENKINS_CONFIG
export CASC_JENKINS_CONFIG=/path/to/jenkins.yaml

Лучшие Практики

Рекомендации по Безопасности

Поддержание безопасности экземпляра Jenkins для продакшена.

# Рекомендации по безопасности:
# 1. Включить безопасность и аутентификацию
# 2. Использовать авторизацию на основе матрицы
# 3. Регулярные обновления безопасности
# 4. Ограничение разрешений пользователей
# 5. Использование API токенов вместо паролей
# Защита конфигурации Jenkins:
# - Отключить CLI через remoting
# - Использовать HTTPS с действительными сертификатами
# - Регулярное резервное копирование JENKINS_HOME
# - Мониторинг уведомлений о безопасности
# - Использование плагинов учетных данных для секретов

Оптимизация Производительности

Оптимизация Jenkins для лучшей производительности и масштабируемости.

# Советы по производительности:
# 1. Использовать распределенные сборки с агентами
# 2. Оптимизировать скрипты сборки и зависимости
# 3. Автоматическая очистка старых сборок
# 4. Использовать библиотеки конвейеров для повторного использования
# 5. Мониторинг дискового пространства и использования памяти
# Оптимизация сборки:
# - Использовать инкрементальные сборки, где это возможно
# - Параллельное выполнение стадий
# - Кэширование артефактов
# - Очистка рабочей области
# - Тонкая настройка выделения ресурсов

Соответствующие Ссылки