Avisar por Discord cuándo un job o pipeline de Jenkins ha finalizado

Tiempo de lectura: 3 minutos

Hoy os voy a enseñar cómo podemos lanzar un aviso a Discord cuándo un job de Jenkins ha finalizado.

Primero instalamos el plugin Discord Notifier: https://plugins.jenkins.io/discord-notifier/

Lo buscamos en administrar Jenkins > Available Plugins > Discord Notifier

Lo instalamos pulsando en Install Without restart.

Ahora vamos al Job dónde queremos utilizarlo y seleccionamos Añadir acciones para ejecutar después:

Y seleccionamos Discord Notifier:

Ahora añadimos el webhook de Discord. Para ello seleccionamos el canal dónde queremos lanzar el aviso:

Pulsamos en ajustes > integraciones > webhooks

Nuevo webhook:

Añadimos un nombre y copiamos la URL del webhook creado.

Lo añadimos en el plugin instalado y damos a guardar.

Y ahora Jenkins nos avisará cuándo haya un despliegue.

Si queremos añadirlo en un pipeline, tendremos que añadir este código en el pipeline. (lo añadimos despues de stages)

post {
        success {
            discordSend description: "Jenkins Pipeline Build", footer: "Despliegue realizado correctamente", link: env.BUILD_URL, result: currentBuild.currentResult, title: JOB_NAME, webhookURL: "Webhook URL"
        }
        
        failure {
            discordSend description: "Jenkins Pipeline Error", footer: "El despliegue ha fallado", link: env.BUILD_URL, result: currentBuild.currentResult, title: JOB_NAME, webhookURL: "Webhook URL"
        }
    }

En webhook URL indicamos la URL de webhook discord creada.

También podemos ocultar la URL del webhook usando jenkins:

Vamos a administrar Jenkins > Manage credentials

Pulsamos en Global:

Añadimos una nueva credencial de tipo Secret Text:

En secret añadimos la URL del webhook y en ID el nombre que vamos a utilizar para recuperarla en nuestro Jenkinsfile

Guardamos. Ahora para recuperar esta variable en el Jenkinsfile pondremos lo siguiente:

  environment {
        DISCORD_WEBHOOK = credentials('WEBHOOK')
    }

Y lo usaremos llamando a esta variable de entorno:

post {
        success {
            discordSend description: "Jenkins Pipeline Build", footer: "Despliegue realizado correctamente", link: env.BUILD_URL, result: currentBuild.currentResult, title: JOB_NAME, webhookURL: "$DISCORD_WEBHOOK"
        }
        
        failure {
            discordSend description: "Jenkins Pipeline Error", footer: "El despliegue ha fallado", link: env.BUILD_URL, result: currentBuild.currentResult, title: JOB_NAME, webhookURL: "$DISCORD_WEBHOOK"
        }
    }

Deja un comentario