Despliegue de una aplicación usando Jenkins

Í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"'
                        }
                    }
                }
            }
        }
    }
    ...
}
comments powered by Disqus

Relacionados

Gestión de dispositivos de almacenamiento con Powershell

El módulo Storage de la PowerShell de Windows contiene múltiple cmdlets para gestionar los dispositivos de almacenamiento del sistema. En este post se recoge una lista de cmdlets de este módulo que cumplen diferentes funciones para realizar este trabajo.

Leer

Creación de Services en kubernetes

Los servicios en Kubernetes permiten a otros pods o al usuario acceder al servicio que ofrece otro pod.

Leer

Instalación de un CMS Python usando Django

En este post se instala el CMS CMS-Django usando un entorno virtual.

Leer