🚀 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
public
generada 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.0
con 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
,staging
ydeploy
actualizadas y protegidas. - Usa un entorno separado de pruebas (
APP_ENV: testing
) para la etapatest
. - Asegura que
.env.ci
esté correctamente configurado para el entorno CI.
📌 Requisitos previos
- Laravel correctamente instalado.
- MkDocs y
mkdocs-material
configurados. - Acceso SSH al servidor de producción.
- CI Runner configurado en GitLab.