Como configurar notificações no Jenkins sobre compilação bem-sucedida ou falhada?
sobes.tech IA
Resposta da IA
Para configurar notificações no Jenkins, pode usar as seguintes opções:
-
Notificações integradas por email:
- Aceda a "Manage Jenkins" -> "Configure System".
- Procure a secção "Email Notification" ou "Extended E-mail Notification".
- Configure o servidor SMTP, as credenciais e um email de teste.
- Guarde as alterações.
- Na configuração de cada Job (projeto), na secção "Post-build Actions", adicione "Editable Email Notification" (se o plugin estiver instalado) ou "E-mail Notification".
- Especifique a lista de destinatários, os assuntos dos emails e as condições de envio (sempre, sucesso, falha, construção instável).
-
Utilização de plugins para integração com mensageiros/sistemas:
- Instale o plugin correspondente através de "Manage Jenkins" -> "Manage Plugins" -> "Available plugins". Exemplos:
- Slack Notification Plugin
- Telegram Bot
- Discord Notification Plugin
- Microsoft Teams Notification Plugin
- Jira Notification Plugin
- Configure a ligação ao sistema externo na configuração do plugin (normalmente em "Manage Jenkins" -> "Configure System" ou através de uma nova secção na configuração de um Job específico) (tokens, webhook URL, etc.).
- Na configuração de cada Job, na secção "Post-build Actions", adicione a ação fornecida pelo plugin e configure-a (canal/destinatário, condições de envio).
- Instale o plugin correspondente através de "Manage Jenkins" -> "Manage Plugins" -> "Available plugins". Exemplos:
-
Scripts Groovy no Pipeline:
-
Quando usar Jenkins Pipeline (Declarative ou Scripted), pode integrar notificações diretamente no script.
-
Exemplo em Pipeline Declarative usando o passo
mail:// Pipeline Declarative pipeline { agent any stages { stage('Build') { steps { // Seu código de build echo 'A realizar build...' } } } post { success { mail bcc: '', body: "Build ${env.JOB_NAME} #${env.BUILD_NUMBER} concluída com sucesso.", cc: '', from: '', subject: "Sucesso: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com' } failure { mail bcc: '', body: "A build ${env.JOB_NAME} #${env.BUILD_NUMBER} falhou. Detalhes: ${env.BUILD_URL}", cc: '', from: '', subject: "Falha: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com' } } } -
Exemplo em Scripted Pipeline:
// Scripted Pipeline node { try { stage('Build') { // Seu código de build echo 'A realizar build...' } // Conclusão bem-sucedida currentBuild.result = 'SUCCESS' } catch (err) { // Tratamento de erros currentBuild.result = 'FAILURE' throw err // Re-lançar exceção para marcar a build como falhada } finally { // Enviar notificações independentemente do resultado if (currentBuild.result == 'SUCCESS') { mail bcc: '', body: "Build ${env.JOB_NAME} #${env.BUILD_NUMBER} concluída com sucesso.", cc: '', from: '', subject: "Sucesso: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com' } else { mail bcc: '', body: "A build ${env.JOB_NAME} #${env.BUILD_NUMBER} falhou. Detalhes: ${env.BUILD_URL}", cc: '', from: '', subject: "Falha: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com' } } } -
Para integração com mensageiros em Pipeline, usam-se passos fornecidos por plugins específicos (por exemplo,
slackSend).
-
-
Utilização de hooks:
- Alguns sistemas externos podem enviar webhooks ao Jenkins em certos eventos. Nesse caso, o Jenkins pode estar configurado para executar um script ou enviar uma requisição a um sistema externo após a conclusão da build. Para isso, também se usam plugins ou scripts personalizados na secção "Post-build Actions" ("Execute shell" ou "Execute Windows batch command").
A escolha do método depende das necessidades, do sistema de build utilizado (Freestyle Job ou Pipeline) e dos serviços de notificação integrados. A abordagem mais flexível e moderna é usar Pipeline com passos adequados para notificações.