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" } }
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.