Skip to content

CI/CD con Ejemplos

La sigla CI se refiere a la Integración Continua, mientras la sigla CD significa Despliegue Continuo, facetas que hacen parte de la automatización en DevOps. En este texto quiero presentar con algun ejemplo la combinación ciertas herramientas que hace posible un ejercicio práctico en este asunto. Para ello usaremos lo siguiente: Docker para uso de contenedores, GitHub como Repo, Terraform como IaC (infraestructura como código), Azure Pipelines y AWS (infraestructura operable en la nube).

Se asume que tienes nociones en las tecnologías mecionadas, siendo requisito para realizar una práctica.


Nuestro ejercicio de ejemplo en Node.js

Nuestro programa de ejemplo correspondería a código Node.js y tendría un código como el siguiente:

js
const service = require('restana')();
const os = require('os');
const port = 3000;

service.get('/', (req, res) => {
    const apiVersion = '1.0.0';
    const nodeVersion = process.version;
    const platform = os.type();
    const osVersion = os.version();
    const memory = os.totalmem();
    const serverTime = new Date().toLocaleString();

    const data = {
        apiVersion,
        nodeVersion,
        platform,
        osVersion,
        memory,
        serverTime
    };

    res.send(data);
});

service.start(port);

El código anterior corresponderá a nuestro archivo index.js, pero primero debemos iniciar el proyecto en una carpeta y instalar sus módulos. Para ello, podríamos ejecutar lo siguiente desde la línea de comandos:

bash
mkdir democicd
cd democicd
npm init -y
npm i restana -S
touch index.js

Ahora incorporamos el código de nuestro programa y podemos verificar su funcionamiento ejecutando: node index.js (consultamos en un navegador la dirección: localhost:3000).

Usando Docker

Para usar contenedores con Docker, agregaremos el archivo Dockerfile con el siguiente contenido:

Dockerfile
# 1. Base Image 
FROM node:lts-alpine

# 2. Folder in container
WORKDIR /app

# 3. Files required
COPY package*.json ./

# 4. Install dependencies
RUN npm install

# Copy source code
COPY . .

# Expose API
EXPOSE 3000

# Launch service
CMD ["node", "index.js"]

Guardamos nuestro archivo Dockerfile y usamos los comandos para construir y lanzar nuestro contenedor así:

bash
docker pull node:lts-alpine
docker build -t democicd .
docker run -p 3000:3000 democicd &

El primer comando solo sirve para garantizar la descarga correcta de la imagen y evitar error de credenciales, de lo contario podría omitirse.
En el caso de usar Docker con Colima (un mecanismo de virtualización para macOS/Linux) tendría que iniciarse primero con el comando: colima start