Ответ
В Jenkins я настраиваю уведомления о падении сборки через Declarative Pipeline, используя блок post с условием failure. Вот как это выглядит на практике для уведомления в Slack и отправки email.
1. Базовый пример для Slack (используя плагин Slack Notification):
pipeline {
agent any
stages {
stage('Build') {
steps {
// Шаги сборки...
sh 'make build'
}
}
}
post {
failure {
// Отправка в Slack-канал
slackSend(
channel: '#jenkins-alerts',
color: 'danger',
message: "FAILED: Job '${env.JOB_NAME}' (Build #${env.BUILD_NUMBER})n" +
"Ссылка: ${env.BUILD_URL}n" +
"Причина: Проверьте консольный вывод"
)
// Отправка email (требует настройки SMTP в Jenkins)
emailext (
subject: "[Jenkins FAILED] ${env.JOB_NAME} #${env.BUILD_NUMBER}",
body: "Сборка не удалась. Детали: ${env.BUILD_URL}",
to: 'devops-team@mycompany.com',
attachLog: true // Прикрепляет логи
)
}
}
}
2. Ключевые шаги настройки:
- Плагины: Необходимо установить
Slack NotificationиEmail ExtensionчерезManage Jenkins->Plugins. - Интеграция Slack: В настройках Jenkins (
Manage Jenkins->Configure System) добавить Slack Workspace, указавCredentialс токеном (Bot User OAuth Access Token) и имя канала по умолчанию. - Настройка Email: В тех же системных настройках указать SMTP-сервер, адрес отправителя и использовать
Extended E-mail Notification.
3. Расширенная логика: В реальных пайплайнах я часто добавляю условие unstable и changed (сборка снова упала после успешной) для более точных алертов. Для критичных продакшен-пайплайнов интегрирую с PagerDuty или Opsgenie через их webhook-интерфейсы.