Automatización y Despliegue Continuo con GitHub Actions
Aprende qué es la Integración y Despliegue Continuo (CI/CD), cómo funciona el motor de GitHub Actions con archivos YAML en .github/workflows y cómo automatizar el despliegue a servidores VPS en producción.
¿Qué es CI/CD y por qué revoluciona el desarrollo?
En la era moderna del desarrollo web, los programadores ya no suben archivos manualmente por FileZilla o FTP. En su lugar, utilizamos Integración Continua (CI) y Despliegue Continuo (CD):
| Pilar | Siglas | ¿Qué automatiza? |
|---|---|---|
| Integración Continua | CI (Continuous Integration) | Cada vez que un desarrollador hace git push o abre un Pull Request, un servidor virtual ejecuta automáticamente las pruebas de código, valida la sintaxis y verifica que nada se haya roto. |
| Despliegue Continuo | CD (Continuous Deployment) | Si las pruebas pasan y el código llega a la rama main, el sistema se conecta automáticamente por SSH al servidor de producción (como el VPS de Kilopolis) y despliega la nueva versión en segundos sin intervención humana. |
La Estructura de GitHub Actions
GitHub Actions funciona mediante archivos de configuración en formato YAML (.yml) guardados dentro de la carpeta obligatoria .github/workflows/ de tu repositorio:
- Disparador (Trigger / on): Define qué evento inicia la automatización (ej:
pusha la ramamain). - Trabajo (Job): La máquina virtual (Runner de Ubuntu) donde se ejecutarán las instrucciones.
- Secretos (Secrets): Variables sensibles protegidas (como
SSH_HOST,SSH_KEYy contraseñas) guardadas en GitHub de forma cifrada que nunca quedan expuestas en el código fuente. - Pasos (Steps): La lista secuencial de comandos que se ejecutan (descargar código, conectar por SSH, sincronizar base de datos y recargar PHP-FPM).
⚡ El Flujo Real de Despliegue Automatizado de Kilopolis
El archivo de configuración YAML real utilizado en Kilopolis (.github/workflows/deploy.yml) para conectar por SSH al VPS OVH y desplegar la aplicación en segundos:
# .github/workflows/deploy.yml
name: Deploy a Produccion Kilopolis
# 1. Disparar solo cuando haya un push a la rama main:
on:
push:
branches:
- main
jobs:
deploy:
name: Despliegue en VPS OVH
runs-on: ubuntu-latest
steps:
- name: Descargar codigo del repositorio
uses: actions/checkout@v4
- name: Conectar por SSH y actualizar VPS
uses: appleboy/[email protected]
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
cd /var/www/kilopolis.com
# 1. Traer los cambios mas recientes de main
git fetch origin main
git reset --hard origin/main
# 2. Ejecutar migraciones de base de datos
php database/auto_migrate.php
# 3. Asegurar permisos de storage
chmod -R 775 storage/
chown -R www-data:www-data storage/
# 4. Vaciar OPcache y recargar PHP-FPM
sudo systemctl reload php8.3-fpm
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de Git & GitHub Profesional y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.