Назад к вопросам
Junior
554
questionbank

Как настроить уведомления в Jenkins о успешном или неуспешном выполнении сборки?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Для настройки уведомлений в Jenkins можно использовать следующие способы:

  1. Встроенные уведомления по email:

    • Перейти в "Manage Jenkins" -> "Configure System".
    • Найти секцию "Email Notification" или "Extended E-mail Notification".
    • Задать SMTP-сервер, учетные данные и тестовый email.
    • Сохранить изменения.
    • В конфигурации каждого Job (проекта) в секции "Post-build Actions" добавить "Editable Email Notification" (если установлен плагин) или "E-mail Notification".
    • Указать список получателей, темы писем и условия отправки (всегда, при успехе, при неудаче, при нестабильной сборке).
  2. Использование плагинов для интеграции с мессенджерами/системами:

    • Установить соответствующий плагин из "Manage Jenkins" -> "Manage Plugins" -> "Available plugins". Примеры:
      • Slack Notification Plugin
      • Telegram Bot
      • Discord Notification Plugin
      • Microsoft Teams Notification Plugin
      • Jira Notification Plugin
    • В конфигурации установленного плагина (обычно в "Manage Jenkins" -> "Configure System" или через новый раздел в настройках конкретного Job) настроить подключение к внешней системе (токены, webhook URL и т.п.).
    • В конфигурации каждого Job в секции "Post-build Actions" добавить действие, предоставляемое плагином, и настроить его (канал/получатель, условия отправки).
  3. Groovy скрипты в Pipeline:

    • При использовании Jenkins Pipeline (Declarative или Scripted) можно интегрировать уведомления непосредственно в скрипт.

    • Пример в Declarative Pipeline с использованием mail шага:

      // Declarative Pipeline
      pipeline {
          agent any
          stages {
              stage('Build') {
                  steps {
                      // Ваш код сборки
                      echo 'Performing build...'
                  }
              }
          }
          post {
              success {
                  mail bcc: '', body: "Сборка ${env.JOB_NAME} #${env.BUILD_NUMBER} успешно завершена.", cc: '', from: '', subject: "Успех: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com'
              }
              failure {
                  mail bcc: '', body: "Сборка ${env.JOB_NAME} #${env.BUILD_NUMBER} не удалась. Подробности: ${env.BUILD_URL}", cc: '', from: '', subject: "Неудача: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com'
              }
          }
      }
      
    • Пример в Scripted Pipeline:

      // Scripted Pipeline
      node {
          try {
              stage('Build') {
                  // Ваш код сборки
                  echo 'Performing build...'
              }
              // Успешное завершение
              currentBuild.result = 'SUCCESS'
          } catch (err) {
              // Обработка ошибок
              currentBuild.result = 'FAILURE'
              throw err // Ре-выброс исключения, чтобы отметить сборку как неуспешную
          } finally {
              // Отправка уведомлений независимо от результата
              if (currentBuild.result == 'SUCCESS') {
                  mail bcc: '', body: "Сборка ${env.JOB_NAME} #${env.BUILD_NUMBER} успешно завершена.", cc: '', from: '', subject: "Успех: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com'
              } else {
                  mail bcc: '', body: "Сборка ${env.JOB_NAME} #${env.BUILD_NUMBER} не удалась. Подробности: ${env.BUILD_URL}", cc: '', from: '', subject: "Неудача: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com'
              }
          }
      }
      
    • Для интеграции с мессенджерами в Pipeline используются шаги, предоставляемые соответствующими плагинами (например, slackSend).

  4. Использование хуков:

    • Некоторые внешние системы могут отправлять вебхуки в Jenkins при определенных событиях. В данном случае, наоборот, Jenkins может быть настроен на выполнение скрипта или отправку запроса во внешнюю систему после завершения сборки. Для этого также используются плагины или пользовательские скрипты в секции "Post-build Actions" ("Execute shell" или "Execute Windows batch command").

Выбор метода зависит от потребностей, используемой системы сборки (Freestyle Job или Pipeline) и интегрируемых сервисов для уведомлений. Наиболее гибким и современным подходом является использование Pipeline с соответствующими шагами для уведомлений.