Pipelines en Gitlab, el camino hacia el CI/CD (parte I)

En esta entrada se dará una visión general sobre qué es y cómo configurar un Gitlab Runner. También se explicará qué es y cómo configurar un pipeline. Por último, se enseñará un pequeño proyecto-ejemplo para poner en práctica los conocimientos adquiridos.

En una entrada anterior explicamos la teoría del CI/CD, en qué consiste y para qué sirve. La teoría está bien, pero no hay nada mejor para terminar de asimilar la teoría que un buen ejemplo de uso práctico.

Hemos elegido Gitlab para este fin ya que, en nuestra opinión, es muy fácil de instalar, configurar, mantener y visualmente es muy sencillo de comprender.

Nota: Este artículo no cubrirá el proceso de instalación de Gitlab en sí. Damos por hecho que el público al que este artículo está dirigido dispone de una instalación de Gitlab o, en su defecto, cuenta con los conocimientos y habilidades suficientes para llevar al cabo la instalación por su cuenta.

Nota: Todas las explicaciones en este artículo se harán partiendo de la premisa de que se dispone de una instalación de Gitlab CE 12.8, es decir, la última versión gratuita de Gitlab disponible en este momento. No se mencionarán características disponibles únicamente en la versión de pago.

Nota: Los ejemplos están basados en un Debian Buster (10).

Nota: Se da por hecho que el público al que este artículo está dirigido tiene unas nociones básicas sobre el uso de Git y Gitlab: entiende lo que es un grupo, un proyecto, un commit, etc…

Sigue leyendo

Infraestructura inmutable y despliegue azul/verde

En esta entrada se explicará el significado del término «infraestructura inmutable» y las ventajas que supone aplicar la metodología de despliegue «azul/verde». También se definirá el concepto de tratar a los servidores como «mascotas o ganado».

Cualquiera que haya necesitado desplegar código a un servidor ha tenido que hacer frente a la inevitable situación de tener que actualizar dicho código. Ya sea porque ha surgido un fallo en el código y ha de corregirse, ya sea porque está disponible una nueva característica en una versión más reciente de dicho código, ya sea cualquier otro motivo.

El método más básico, por el que probablemente todo el mundo ha pasado, es el de copiar manualmente archivos de su propio ordenador al servidor en cuestión mediante FTP, SFTP o SCP (usando FileZilla, WinSCP, scp, rsync, etc…). También existen métodos alternativos un poco más avanzados (aunque a efectos prácticos de igual índole), como por ejemplo el uso de Capistrano, Fabric, etc…

Sigue leyendo

Integración continua y despliegue continuo

En esta entrada se definirán varios conceptos básicos relacionados con la automatización de las tareas que ejecutamos antes de desplegar nuestro código, así como la automatización de los despliegues en sí. También se describirán las metodologías más comunes que permiten unir estos conceptos y usarlos como un conjunto.

Integración continua

Durante el proceso de desarrollo de nuestro proyecto, sobre todo cuando en el mismo participa un número elevado de personas, pueden existir una serie de tareas que queramos ejecutar para facilitar el trabajo en equipo y mantener el buen estado del proyecto. Estas tareas pueden ser de cualquier tipo, desde una simple comprobación del código en busca de errores de sintaxis o de formateo incorrecto, hasta la ejecución de pruebas unitarias, pasando por el análisis estático y/o dinámico del código en busca de posibles vulnerabilidades, etc…

Sigue leyendo