🚀 Documentación de Pipelines de GitLab CI/CD para Proyecto Laravel
Este archivo documenta el funcionamiento del pipeline definido en .gitlab-ci.yml para un proyecto Laravel con MySQL. El flujo de integración y entrega continua se organiza en tres etapas principales: generación de documentación, testing y despliegue.
🔁 Etapas del pipeline
stages:
- pages
- test
- deploy
📘 Etapa: pages
Genera documentación del proyecto con MkDocs y la publica como GitLab Pages.
- Imagen usada:
python:3.10 - Comandos ejecutados:
bash pip install mkdocs-material rm -rf public mkdocs build mv site public - Artefactos:
- Carpeta
publicgenerada por MkDocs. - Rama activadora:
main
🧪 Etapa: test
Ejecuta tests del proyecto Laravel en un entorno controlado con base de datos MySQL.
- Imagen usada:
php:8.2 - Servicio adicional:
mysql:8.0con aliasmysql - Variables de entorno:
MYSQL_ROOT_PASSWORD,MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORD- Comandos previos (
before_script): - Instalación de dependencias del sistema y extensiones PHP.
- Instalación de Composer.
- Preparación del entorno Laravel (
.env, claves, migraciones...). - Comando de test:
bash php artisan test --debug - Rama activadora:
staging
🚚 Etapa: deploy
Realiza el despliegue del código en un servidor remoto utilizando SSH.
- Imagen usada:
alpine:latest - Dependencias previas:
sshpass,openssh - Script de despliegue:
- Conecta vía SSH al servidor remoto usando credenciales.
- Ejecuta una serie de comandos en el servidor:
git pull,composer install,php artisan migrate,npm install,npm run build, y reinicio denginx.
sshpass -p "$SSH_PASSWORD" ssh -tt -o StrictHostKeyChecking=no $SSH_USER@$SSH_HOST "
git config --global --add safe.directory /var/www/html/Netflox &&
cd /var/www/html/Netflox &&
git checkout deploy &&
git pull &&
composer install --no-interaction &&
php artisan migrate --force &&
npm install &&
npm run build &&
systemctl restart nginx"
- Dependencia explícita: etapa
test - Rama activadora:
deploy
🔐 Variables sensibles
Estas variables deben estar definidas en GitLab CI/CD (Settings > CI/CD > Variables):
SSH_USER: Usuario SSHSSH_HOST: IP o dominio del servidor remotoSSH_PASSWORD: Contraseña SSH
✅ Buenas prácticas
- Mantén las ramas
main,stagingydeployactualizadas y protegidas. - Usa un entorno separado de pruebas (
APP_ENV: testing) para la etapatest. - Asegura que
.env.ciesté correctamente configurado para el entorno CI.
📌 Requisitos previos
- Laravel correctamente instalado.
- MkDocs y
mkdocs-materialconfigurados. - Acceso SSH al servidor de producción.
- CI Runner configurado en GitLab.