Sobes.tech
Junior

Jak nastavit upozornění v Jenkins na úspěšné nebo neúspěšné sestavení?

sobes.tech AI

Odpověď od AI

Pro nastavení oznámení v Jenkins lze použít následující způsoby:

  1. Vestavěná oznámení e-mailem:

    • Přejděte na "Manage Jenkins" -> "Configure System".
    • Najděte sekci "Email Notification" nebo "Extended E-mail Notification".
    • Nastavte SMTP server, přihlašovací údaje a testovací e-mail.
    • Uložte změny.
    • V konfiguraci každé práce (projektu) v sekci "Post-build Actions" přidejte "Editable Email Notification" (pokud je nainstalován plugin) nebo "E-mail Notification".
    • Uveďte seznam příjemců, předměty e-mailů a podmínky odeslání (vždy, při úspěchu, při selhání, při nestabilní sestavě).
  2. Použití pluginů pro integraci s messengery/systémy:

    • Nainstalujte odpovídající plugin z "Manage Jenkins" -> "Manage Plugins" -> "Available plugins". Příklady:
      • Slack Notification Plugin
      • Telegram Bot
      • Discord Notification Plugin
      • Microsoft Teams Notification Plugin
      • Jira Notification Plugin
    • Nakonfigurujte nainstalovaný plugin (obvykle v "Manage Jenkins" -> "Configure System" nebo přes novou sekci v nastavení konkrétní práce) pro připojení k externímu systému (tokeny, webhook URL atd.).
    • V konfiguraci každé práce v sekci "Post-build Actions" přidejte akci poskytovanou pluginem a nakonfigurujte ji (kanál/příjemce, podmínky odeslání).
  3. Groovy skripty v Pipeline:

    • Při použití Jenkins Pipeline (Declarative nebo Scripted) lze oznámení přímo integrovat do skriptu.

    • Příklad v Declarative Pipeline s použitím kroku mail:

      // Declarative Pipeline
      pipeline {
          agent any
          stages {
              stage('Build') {
                  steps {
                      // Váš kód sestavení
                      echo 'Performing build...'
                  }
              }
          }
          post {
              success {
                  mail bcc: '', body: "Sestavení ${env.JOB_NAME} #${env.BUILD_NUMBER} bylo úspěšně dokončeno.", cc: '', from: '', subject: "Úspěch: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com'
              }
              failure {
                  mail bcc: '', body: "Sestavení ${env.JOB_NAME} #${env.BUILD_NUMBER} selhalo. Podrobnosti: ${env.BUILD_URL}", cc: '', from: '', subject: "Selhání: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com'
              }
          }
      }
      
    • Příklad v Scripted Pipeline:

      // Scripted Pipeline
      node {
          try {
              stage('Build') {
                  // Váš kód sestavení
                  echo 'Performing build...'
              }
              currentBuild.result = 'SUCCESS'
          } catch (err) {
              currentBuild.result = 'FAILURE'
              throw err
          } finally {
              if (currentBuild.result == 'SUCCESS') {
                  mail bcc: '', body: "Sestavení ${env.JOB_NAME} #${env.BUILD_NUMBER} bylo úspěšně dokončeno.", cc: '', from: '', subject: "Úspěch: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com'
              } else {
                  mail bcc: '', body: "Sestavení ${env.JOB_NAME} #${env.BUILD_NUMBER} selhalo. Podrobnosti: ${env.BUILD_URL}", cc: '', from: '', subject: "Selhání: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com'
              }
          }
      }
      
    • Pro integraci s messengery se v Pipeline používají kroky poskytované příslušnými pluginy (například slackSend).

  4. Použití hooků:

    • Některé externí systémy mohou posílat webhooky do Jenkins při určitých událostech. Naopak, Jenkins může být nakonfigurován tak, aby po dokončení sestavení spustil skript nebo odeslal požadavek do externího systému. K tomu se také používají pluginy nebo vlastní skripty v sekci "Post-build Actions" ("Execute shell" nebo "Execute Windows batch command").

Volba metody závisí na potřebách, používaném systému sestavení (Freestyle Job nebo Pipeline) a integrovaných službách pro oznámení. Nejvíce flexibilní a moderní přístup je použití Pipeline s příslušnými kroky pro oznámení.