Despliegue CI/CD con GitHub Actions y Servidores Privados
===========================================================
Arquitectura de Despliegue
En esta guía técnica, exploraremos la implementación de un despliegue CI/CD utilizando GitHub Actions y servidores privados. Este proceso automatizará la compilación, pruebas y despliegue de aplicaciones en un entorno de producción.
Requisitos Previos
Una cuenta en GitHub con un repositorio existente
Un servidor privado con acceso SSH
Acceso a la consola del servidor
Conocimientos básicos de Git y GitHub Actions
Configuración de GitHub Actions
Crear un Workflow
1. Inicia sesión en tu cuenta de GitHub y navega a tu repositorio.
2. Haz clic en
Settings >
Actions >
New workflow.
3. Selecciona
Create a new workflow from scratch.
4. Define el nombre y la descripción de tu flujo de trabajo.
Configuración del Flujo de Trabajo
yml
name: Despliegue CI/CD
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout código
uses: actions/checkout@v2
- name: Instalar dependencias
run: npm install
- name: Compilar código
run: npm run build
- name: Pruebas
run: npm run test
- name: Despliegue
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SERVIDOR_PRIVADO }}
username: ${{ secrets.USUARIO_SERVIDOR }}
private-key: ${{ secrets.PRIVADA_KEY }}
script: |
cd /var/www/html
git pull origin main
npm install
npm run build
npm start
Variables de Entorno
SERVIDOR_PRIVADO: Dirección IP o nombre del servidor privado.
USUARIO_SERVIDOR: Nombre de usuario para acceder al servidor.
PRIVADA_KEY: Clave privada para acceder al servidor.
Configuración de SSH
1. Crea un archivo de configuración SSH en tu repositorio con el nombre .ssh/config.
2. Agrega la siguiente configuración:bash
Host SERVIDOR_PRIVADO
HostName SERVIDOR_PRIVADO
User USUARIO_SERVIDOR
IdentityFile ~/.ssh/PRIVADA_KEY
3. Crea un archivo de clave privada en tu máquina local con el nombre PRIVADA_KEY.
Configuración de Servidor Privado
Instalar SSH
1. Conecta a tu servidor privado mediante SSH.
2. Instala SSH si no está instalado:bash
sudo apt-get update
sudo apt-get install openssh-server
3. Reinicia el servicio SSH:bash
sudo service ssh restart
Configuración de Acceso SSH
1. Crea un nuevo grupo de usuarios en el servidor:bash
sudo groupadd grupo_despliegue
2. Agrega el usuario al grupo:bash
sudo usermod -aG grupo_despliegue USUARIO_SERVIDOR
3. Concede permisos de escritura al grupo en el directorio de despliegue:bash
sudo chown -R USUARIO_SERVIDOR:grupo_despliegue /var/www/html
Despliegue Automatizado
1. Guarda los cambios en tu flujo de trabajo.
2. Verifica que el flujo de trabajo se ejecute correctamente.
3. El despliegue se realizará automáticamente cada vez que se haga un push a la rama principal.
Seguridad
Asegúrate de que la clave privada esté cifrada con una contraseña.
Limita el acceso al servidor a través de IP o grupo de usuarios.
Utiliza un token de acceso para el despliegue.
Problemas Comunes
Verifica que la clave privada esté configurada correctamente en el archivo .ssh/config.
Asegúrate de que el servidor esté configurado para permitir conexiones SSH.
Verifica que el flujo de trabajo esté configurado correctamente en GitHub.
Referencias
GitHub Actions
SSH
Servidores Privados