Как настроить уведомления в Jenkins о успешном или неуспешном выполнении сборки?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Для настройки уведомлений в Jenkins можно использовать следующие способы:
-
Встроенные уведомления по email:
- Перейти в "Manage Jenkins" -> "Configure System".
- Найти секцию "Email Notification" или "Extended E-mail Notification".
- Задать SMTP-сервер, учетные данные и тестовый email.
- Сохранить изменения.
- В конфигурации каждого Job (проекта) в секции "Post-build Actions" добавить "Editable Email Notification" (если установлен плагин) или "E-mail Notification".
- Указать список получателей, темы писем и условия отправки (всегда, при успехе, при неудаче, при нестабильной сборке).
-
Использование плагинов для интеграции с мессенджерами/системами:
- Установить соответствующий плагин из "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" добавить действие, предоставляемое плагином, и настроить его (канал/получатель, условия отправки).
- Установить соответствующий плагин из "Manage Jenkins" -> "Manage Plugins" -> "Available plugins". Примеры:
-
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).
-
-
Использование хуков:
- Некоторые внешние системы могут отправлять вебхуки в Jenkins при определенных событиях. В данном случае, наоборот, Jenkins может быть настроен на выполнение скрипта или отправку запроса во внешнюю систему после завершения сборки. Для этого также используются плагины или пользовательские скрипты в секции "Post-build Actions" ("Execute shell" или "Execute Windows batch command").
Выбор метода зависит от потребностей, используемой системы сборки (Freestyle Job или Pipeline) и интегрируемых сервисов для уведомлений. Наиболее гибким и современным подходом является использование Pipeline с соответствующими шагами для уведомлений.