Sobes.tech
Junior

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:

  1. 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).
  2. 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).
  3. 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).

  4. 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.