Sobes.tech
Junior

Kako podesiti obaveštenja u Jenkins-u o uspešnom ili neuspešnom izgradnji?

sobes.tech АИ

Одговор од АИ

Za podešavanje obaveštenja u Jenkins-u možete koristiti sledeće načine:

  1. Ugrađena obaveštenja putem email-a:

    • Idite na "Manage Jenkins" -> "Configure System".
    • Pronađite sekciju "Email Notification" ili "Extended E-mail Notification".
    • Podesite SMTP server, podatke za prijavu i test email.
    • Sačuvajte izmene.
    • U konfiguraciji svake Job (projekta), u sekciji "Post-build Actions" dodajte "Editable Email Notification" (ako je plugin instaliran) ili "E-mail Notification".
    • Navedite listu primaoca, teme emailova i uslove za slanje (uvek, pri uspehu, pri neuspehu, pri nestabilnoj izgradnji).
  2. Korišćenje pluginova za integraciju sa messengerima/sistemima:

    • Instalirajte odgovarajući plugin putem "Manage Jenkins" -> "Manage Plugins" -> "Available plugins". Primeri:
      • Slack Notification Plugin
      • Telegram Bot
      • Discord Notification Plugin
      • Microsoft Teams Notification Plugin
      • Jira Notification Plugin
    • Konfigurišite instalirani plugin (obično u "Manage Jenkins" -> "Configure System" ili kroz novi odeljak u podešavanjima konkretne Job) za povezivanje sa spoljnim sistemom (tokene, webhook URL i sl.).
    • U konfiguraciji svake Job, u sekciji "Post-build Actions" dodajte radnju koju pruža plugin i konfigurišite je (kanal/primalac, uslovi slanja).
  3. Groovy skripte u Pipeline-u:

    • Pri korišćenju Jenkins Pipeline (Declarative ili Scripted), možete direktno integrisati obaveštenja u skriptu.

    • Primer u Declarative Pipeline sa korišćenjem mail koraka:

      // Declarative Pipeline
      pipeline {
          agent any
          stages {
              stage('Build') {
                  steps {
                      // Vaš kod za izgradnju
                      echo 'Performing build...'
                  }
              }
          }
          post {
              success {
                  mail bcc: '', body: "Izgradnja ${env.JOB_NAME} #${env.BUILD_NUMBER} uspešno je završena.", cc: '', from: '', subject: "Uspeh: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com'
              }
              failure {
                  mail bcc: '', body: "Izgradnja ${env.JOB_NAME} #${env.BUILD_NUMBER} nije uspela. Detalji: ${env.BUILD_URL}", cc: '', from: '', subject: "Neuspeh: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com'
              }
          }
      }
      
    • Primer u Scripted Pipeline:

      // Scripted Pipeline
      node {
          try {
              stage('Build') {
                  // Vaš kod za izgradnju
                  echo 'Performing build...'
              }
              currentBuild.result = 'SUCCESS'
          } catch (err) {
              currentBuild.result = 'FAILURE'
              throw err
          } finally {
              if (currentBuild.result == 'SUCCESS') {
                  mail bcc: '', body: "Izgradnja ${env.JOB_NAME} #${env.BUILD_NUMBER} uspešno je završena.", cc: '', from: '', subject: "Uspeh: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com'
              } else {
                  mail bcc: '', body: "Izgradnja ${env.JOB_NAME} #${env.BUILD_NUMBER} nije uspela. Detalji: ${env.BUILD_URL}", cc: '', from: '', subject: "Neuspeh: ${env.JOB_NAME} - ${env.BUILD_NUMBER}", to: 'recipient@example.com'
              }
          }
      }
      
    • Za integraciju sa messengerima, u Pipeline-u se koriste koraci koje pružaju odgovarajući pluginovi (npr. slackSend).

  4. Korišćenje hook-ova:

    • Neki eksterni sistemi mogu slati webhook-ove u Jenkins pri određenim događajima. Obrnuto, Jenkins može biti konfigurisan da izvrši skriptu ili pošalje zahtev spoljnjem sistemu nakon završetka izgradnje. Za to se takođe koriste pluginovi ili prilagođeni skripti u sekciji "Post-build Actions" ("Execute shell" ili "Execute Windows batch command").

Izbor metode zavisi od potreba, korišćenog sistema za izgradnju (Freestyle Job ili Pipeline) i integrisanih servisa za obaveštenja. Najfleksibilniji i najmoderniji pristup je korišćenje Pipeline sa odgovarajućim koracima za obaveštenja.