Integrando Notificaciones email, Slack

validamos que el plugin de envios de correo este instalado

Podemos configurar como paso extra una cuenta para manejo de prebas de un inbox de correo, para este caso usaremos el servicio de https://mailtrap.io/, el cual nos permite configurar un servidor de pruebas smtp

Creada la cuenta vamos a la configuracion global de Jenkins y busca la seccion "Extended E-mail Notification"

Configuramos el smtp server, y las credenciales para poder tener acceso a la bandeja de pruebas que nos proporciona el servicio de mailtrap

Ahora creamos un script para probar el envio de la notificacion, este es el codigo a utilizar para dicho script

node {

  // config 
  def to = emailextrecipients([
          [$class: 'CulpritsRecipientProvider'],
          [$class: 'DevelopersRecipientProvider'],
          [$class: 'RequesterRecipientProvider']
  ])

  // job
  try {
    stage('build') {
      println('so far so good...')
    }
    stage('test') {
      println('A test has failed!')
      sh 'exit 1'
    }
  } catch(e) {
    // mark build as failed
    currentBuild.result = "FAILURE";
    // set variables
    def subject = "${env.JOB_NAME} - Build #${env.BUILD_NUMBER} ${currentBuild.result}"
    def content = '${JELLY_SCRIPT,template="html"}'

    // send email
    if(to != null && !to.isEmpty()) {
      emailext(body: content, mimeType: 'text/html',
         replyTo: '$DEFAULT_REPLYTO', subject: subject,
         to: to, attachLog: true )
    }

    // mark current build as a failure and throw the error
    throw e;
  }
}

Configuramos una nueva pipeline, para hacer uso del script y la ejecutamos, como se muestra en la imagen se genera un error en el build y se debe de enviar la notifiacion al correo

Si vamos a la bandeja de pruebas de mailtrap, podemos observar que se envio la notificacion como se esperaba

Slack

para el envio de notificaciones hacia el servicio de slack primero vamos a crear un espacio de trabajo de pruebas, esto lo realizamos desde la web o el aplicativo de slack seguimos los pasos que se muestran en las imagenes a continuacion

Con el espacio de trabajo creado nos dirigmos a Jenkins e instalamos el plugin de notificaciones

con el plugin instalado regresamos a slack y hacemos unas configuraciones en el espacio de trabajo, la primera de ella es crear un canal espcifico para recibir las notificaciones

Segundo agregamos una nueva aplicacion.

Nos abrira una pagina en el navegar en la cual debemos de seleccionar la app que necesitamos en el canal, en este caso usaremos la app "WebHooks entrantes", la añadimos dando click en el boton "añadir Configuracion"

Y asociamos el canal con el cual trabajara la configuracion

Al agregar la integracion se despliga una informacion que la utilizaremos en jenkins para hacer la configuracion de la comunicacion del espacio de trabajo y Jenkins

Vamos a Jenkins y en configuracion global, nos dirigimos a la seccion "Global Slack Notifier Settings", lo primero que configuramos es las credenciales para ello lanzamos el gestor de credenciales de Jenkins y en proveedor selecionamos jenkins, al cargar la ventana configuramos como se muestra en la imagen, el secret es las ultimas dos partes que nos asigna la configuracion de la asigancion del Webhook

Agregadas las credenciales, realizanos las configuracions del plugin

Creamos un script para hacer las pruebas

node {

  // job
  try {
    stage('build') {
      println('so far so good...')
    }
    stage('test') {
      println('A test has failed!')
      sh 'exit 1'
    }
  } catch(e) {
    // mark build as failed
    currentBuild.result = "FAILURE";

    // send slack notification
    slackSend (color: '#FF0000', message: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")

    // throw the error
    throw e;
  }
}

Agregamos un nuevo pipeline y lo ejecutamos debemos de obtener un error en la ejecucion, pero lo que nos interesa es recibir la notificacion en el canal de slack

Notificaciones recibidas en el canal

Last updated

Was this helpful?