Despliegue de una aplicación usando Jenkins
- Francisco Javier Huete
- Implantacion
- March 9, 2025
Índice
Jenkins cuenta con varios plugins que permiten ejecutar comandos en un servidor remoto usando el protocolo SSH. Esto permite incluir una etapa de despliegue en el pipeline en la que, después de probar la aplicación, crear la imagen Docker y subirla a un registro de imágenes, se puede descargar la imagen en el servidor en producción y desplegar la aplicación en él.
En este caso, se opta por usar el plugin ssh agent, que permite realizar conexiones SSH con una máquina desde un pipeline de Jenkins para implantar en un entorno de producción una aplicación a partir de una imagen Docker creada previamente en el mismo pipeline.
Antes de poder conectar desde el pipeline de Jenkins al servidor remoto por SSH hay que configurar las credenciales para la conexión en Jenkins. Esto se puede hacer en el Panel de control -> Administrar Jenkins -> Credenciales. En las credenciales globales se añade una nueva de tipo SSH username with private key
. En este formulario se indica el nombre de usuario para la conexión SSH y su clave privada. También se puede añadir una descripción de las credenciales y la frase de paso de la clave privada, si la tuviese.
Tras crear las credenciales, se pueden usar en el pipeline. Para hacer el despliegue se añade una nueva etapa en la que se usa el plugin ssh agent para ejecutar una serie de comandos por SSH en el servidor en el que se despliega la aplicación.
pipeline {
...
agent none
stages {
...
stage ('Despliegue') {
agent any
stages {
stage ('Despliegue en el VPS'){
steps{
sshagent(credentials : ['Pignite']) {
sh 'ssh -o StrictHostKeyChecking=no debian@pignite.javihuete.site "cd django_tutorial && git pull && docker compose down && docker compose up -d"'
}
}
}
}
}
}
...
}