+7 (495) 107-75-45 Подключение
+7 (495) 107-75-47 Тех. поддержка 24/7
Пример
08.11.2024

Основы CI/CD с использованием Jenkins

Введение

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

Основы ci/cd

Основные понятия CI/CD

  • CI (Continuous Integration)
    CI — это практика частой интеграции кода в центральный репозиторий, что позволяет выявить и исправить ошибки на раннем этапе. Программисты коммитят изменения, которые Jenkins автоматически тестирует, предотвращая накопление ошибок.
  • CD (Continuous Delivery и Continuous Deployment)
    • Continuous Delivery: автоматизация развертывания приложения в подготовленные среды (staging).
    • Continuous Deployment: полностью автоматическое развертывание до production, когда все тесты пройдены успешно.

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

 

Установка jenkins

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

Для начала разберёмся с установкой Jenkins. Он может работать на различных операционных системах и поддерживает множество плагинов.

Шаги установки на Debian/Ubuntu:

Установка Java, которая необходима для работы Jenkins:

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

Добавление репозитория и установка Jenkins:

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
   /usr/share/keyrings/jenkins-keyring.asc > /dev/null
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
sudo apt update
sudo apt install jenkins -y

Запуск Jenkins и проверка статуса:

sudo systemctl start jenkins
sudo systemctl status jenkins

Доступ к Jenkins через веб-интерфейс
После установки Jenkins доступен по адресу http://localhost:8080. При первом запуске понадобится ввести начальный пароль, который можно найти командой:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  1. Начальная настройка Jenkins
    В веб-интерфейсе можно установить рекомендуемые плагины и создать учетную запись администратора.

Основные компоненты Jenkins

Основные компоненты Jenkins

  • Job (Задание)
    Задания — это основные блоки автоматизации в Jenkins. Они могут выполнять сборку, тестирование, деплой и другие задачи.
  • Pipeline (Пайплайн)
    Пайплайн — это набор задач, написанных на DSL-синтаксисе Jenkins. Он позволяет описывать сложные CI/CD-процессы с различными этапами. Пайплайны поддерживают контроль версий, что делает их удобными для совместной работы.
  • Плагины Jenkins
    Плагины позволяют интегрировать Jenkins с различными инструментами и платформами, такими как Git, Docker, Kubernetes, Slack и другие. Установка и настройка необходимых плагинов значительно расширяют возможности Jenkins.

Создание первого пайплайна Jenkins

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

  1. Создание нового задания
    • На главной странице Jenkins выберите «New Item» (Новый элемент).
    • Укажите имя задания и выберите «Pipeline» (Пайплайн) как тип проекта.
  2. Конфигурация пайплайна
    • В разделе «Pipeline» выберите «Pipeline script» и введите код пайплайна, например:
pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git url: 'https://github.com/user/repo.git', branch: 'main'
            }
        }
        stage('Build') {
            steps {
                sh 'make build'
            }
        }
        stage('Test') {
            steps {
                sh 'make test'
            }
        }
    }
}
  1. Здесь:
    • stage('Checkout') — клонирование кода из репозитория Git.
    • stage('Build') — сборка приложения с использованием команды make build.
    • stage('Test') — выполнение тестов командой make test.
  2. Запуск и проверка пайплайна После сохранения задания вернитесь на его главную страницу и нажмите «Build Now» (Запустить сборку). Jenkins начнет выполнение пайплайна, показывая результаты каждой стадии.

5. Интеграция Jenkins с системой контроля версий

Для автоматического запуска пайплайна при каждом коммите добавим вебхуки в репозиторий. Например, для GitHub:

  • В настройках репозитория найдите «Webhooks» и добавьте URL Jenkins: http://your-jenkins-url/github-webhook/.
  • Теперь Jenkins будет запускать пайплайн при каждом коммите, поддерживая актуальное состояние.

6. Настройка уведомлений в Jenkins

Чтобы получать уведомления о статусе сборок:

  • Email
    Установите плагин Email Extension Plugin и настройте уведомления о результатах сборки по почте.
  • Slack
    Установите Slack Notification Plugin. Затем создайте Webhook URL в Slack и добавьте его в конфигурацию Jenkins, чтобы получать уведомления в выбранный канал Slack.

7. Автоматизация деплоя с Jenkins

Использование Jenkins для деплоя в разные среды позволяет упростить процесс CI/CD.

  • SSH-деплой
    Установите плагин SSH Pipeline Steps, который позволяет выполнять команды SSH на удаленном сервере:
stage('Deploy') {
    steps {
        sshPublisher(
            publishers: [
                sshPublisherDesc(
                    configName: 'remote-server',
                    transfers: [sshTransfer(sourceFiles: 'build/*', remoteDirectory: '/var/www/app')],
                    execCommand: 'systemctl restart app'
                )
            ]
        )
    }
}

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

stage('Docker Build & Push') {
    steps {
        sh 'docker build -t myapp:latest .'
        sh 'docker push myrepo/myapp:latest'
    }
}

Заключение

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