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

Test para la integración continua de una aplicación django

A partir de la aplicación django_tutorial escrita en Python usando Django se configura un pipeline en Jenkins que ejecute de forma automática los test sobre la aplicación.

Leer

Instalación y configuración del gestor de arranque systemd-boot en Debian

systemd-boot es un gestor de arranque creado de la fusión del proyecto gummiboot con el proyecto systemd. Tanto gummiboot como systemd-boot están desarrollados por Red Hat. Este gestor de arranque pretende ser una alternativa minimalista al gestor de arranque GRUB, desarrollado por GNU y está diseñado para sistemas que usan la interfaz de firmware UEFI.

Leer

Gestión de almacenamiento en Openstack

En este post se muestran algunos ejemplos de funcionamiento del cliente de OpenStack para la gestión del almacenamiento.

Leer