CI/CD para Laravel: flujo de trabajo de git e implementaciones sin tiempo de inactividad
Por Andrea Pollastri · Última actualización: · lectura gratuita, sin muro de pago
La brecha entre "funciona en mi máquina" y "se implementa de forma segura" es menor que nunca. Esta guía le brinda un flujo de trabajo de Git que se reduce a un equipo de una sola persona, una canalización de CI de copiar y pegar y los patrones de implementación sin tiempo de inactividad que hacen que los lanzamientos de los viernes sean aburridos.
Por qué los oleoductos valen la pena (incluso solos)
CI/CD no es una ceremonia empresarial: es el seguro más barato que puede comprar una base de código:
- Repetibilidad: el oleoducto realiza las mismas comprobaciones cada vez; los humanos no.
- La ansiedad por el despliegue llega a cero. Cuando las implementaciones son una pulsación y las reversiones son un enlace simbólico, envía pequeños cambios a menudo en lugar de lotes aterradores rara vez.
- La calidad de las reseñas aumenta porque CI ya ha detectado los problemas mecánicos antes de un miradas humanas.
- El código generado por IA hace que esto no sea opcional: Si los agentes escriben más código, el pipeline es el árbitro que mantiene los estándares objetivos (más en el desarrollo basado en especificaciones guía).
Un flujo de trabajo de Git que se reduce
Omita git-flow a menos que envíe lanzamientos en caja. Para las aplicaciones web, gana la basada en troncales con ramas de corta duración:
mainsiempre es desplegable. Protéjalo: no hay empujones directos, los RP deben pasar CI.- Las sucursales viven días, no semanas.
feature/checkout-vat,fix/queue-timeout- fusionar o eliminar. - compromisos convencionales (
feat:,fix:,chore:) hacer que el historial sea escaneable y los registros de cambios automatizables. - Lanzamientos de etiquetas (
v2026.08.04o semver) para que siempre puedas responder "¿qué fue?" ¿Vivir el martes?". - Los RP son la pista de auditoría. Incluso en solitario: una autoevaluación de dos minutos con CI verde capta una cantidad sorprendente.
La canalización de CI, lista para copiar y pegar
Cuatro etapas, cada una de las cuales falla rápidamente: estilo, análisis estático, pruebas, auditoría de seguridad. Aquí hay un GitHub completo
Flujo de trabajo de acciones para una aplicación Laravel (suéltela en .github/workflows/ci.yml):
name: CI
on:
pull_request:
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
extensions: mbstring, xml, curl, zip, intl, pdo_sqlite
coverage: none
- name: Install dependencies
run: composer install --prefer-dist --no-progress
- name: Prepare environment
run: |
cp .env.example .env
php artisan key:generate
- name: Code style (Pint)
run: vendor/bin/pint --test
- name: Static analysis (Larastan)
run: vendor/bin/phpstan analyse --memory-limit=1G
- name: Tests (Pest)
run: php artisan test --parallel
- name: Security audit
run: composer audit
Notas que vale la pena robar:
- Pint, Larastan, Pest, auditoría, en ese orden: los cheques más baratos primero, por lo que las fallas son rápido.
--parallelen plagas Por lo general, reduce a la mitad el tiempo de la suite de forma gratuita.composer auditfalla la construcción cuando una dependencia tiene un CVE conocido: su cable trampa de la cadena de suministro (consulte el seguridad lista de verificación para la sección de higiene de dependencia completa, incluido el escaneo específico de Laravel con Punto de control).- Añadir
npm ci && npm run buildcomo un trabajo separado si la construcción de sus activos es no trivial.
Opciones de implementación sin tiempo de inactividad
Tiempo de inactividad cero significa: compilar la nueva versión junto a la anterior, intercambiar atómicamente, reiniciar los trabajadores. tres formas de conseguirlo:
1. Webhook push-to-implement (predeterminado recomendado)
Su host de Git llama a webhook al presionar; el servidor crea una nueva versión en releases/, corre
composer install, migrate --force y almacena en caché, intercambia el current
enlace simbólico y reinicia los trabajadores de la cola. Esto es exactamente lo que Cipi configura
automáticamente cuando conectas GitHub o GitLab a una aplicación: implementa claves, webhook, versiones y enlaces simbólicos
intercambio incluido, además de compilaciones de activos de nodo en instantáneas de base de datos de implementación y previas a la implementación en Cipi 5. Costo de configuración:
unocipi app create.
2. Implementación impulsada por CI (SSH desde acciones)
La canalización crea artefactos y los envía a través de SSH (Deployer o rsync + script). Más control, más YAML para poseer: vale la pena cuando necesitas crear artefactos idénticos en todos los entornos.
3. El híbrido
CI ejecuta pruebas; en verde, presiona el despliegue webhook. Obtiene implementaciones cerradas sin mover la implementación
lógica en CI. Con Cipi, eso es una línea curl al final del flujo de trabajo.
Después del despliegue
- Controles de salud: Verifique las respuestas de la aplicación antes de celebrar: Cipi Estado de la aplicación de 5 envíos comprobaciones a las que puede apuntar los monitores.
- Prueba de humo del camino crítico: uno
curla la página de inicio de sesión y uno a una El punto final autenticado captura la mayoría de los estados "implementados pero rotos". - Mira las excepciones durante 15 minutos. Un rastreador self-hosted como Boogle hace el post-despliegue pico de error visible inmediatamente.
- Notificar al equipo: implementar notificaciones en Slack o Telegram cerrar el ciclo (Cipi's Los documentos incluyen ejemplos de notificaciones de CI ya preparados).
Estrategia de migraciones y reversión
- Ampliar/contraer: agregue la nueva columna y el código que escribe ambos primero; quitar lo viejo uno se lanza más tarde. Nunca cambie el nombre en su lugar.
- Las migraciones destructivas obtienen su propia liberación - después del código que dejó de usar el Los datos se verifican en producción.
- La reversión del código es el enlace simbólico volver a la versión anterior; por eso los lanzamientos El patrón importa.
- La reversión de datos es una instantánea. Cipi 5 toma una instantánea de la base de datos previa a la implementación automáticamente, por lo que el peor error de migración tiene un botón para deshacer.
Pon esto en práctica con Cipi
Cipi es la open-source implementación gratuita CLI a la que se hace referencia en esta guía: un comando se convierte en un nuevo Ubuntu VPS en un servidor de producción reforzado para Laravel — Nginx, PHP-FPM o Octane, MariaDB o PostgreSQL, colas, programador, SSL e implementaciones de Git sin tiempo de inactividad incluidas.
Preguntas frecuentes
¿Necesito CI/CD como desarrollador Laravel en solitario?
Sí, posiblemente más que un equipo, porque nadie revisa tu trabajo. Un oleoducto que ejecuta auditorías de Pint, Larastan, Pest y composer en cada impulso es un segundo par de ojos incansable, y las implementaciones basadas en webhook significan que el envío deja de ser un ritual manual.
¿Cómo consigo implementaciones sin tiempo de inactividad para Laravel?
Utilice el patrón de lanzamientos: cree la nueva versión en su propio directorio, ejecute migraciones y cachés, luego intercambie atómicamente un enlace simbólico y reinicie los trabajadores de la cola. Herramientas como Cipi configuran esto automáticamente para las inserciones GitHub y GitLab, de modo que obtenga implementaciones sin tiempo de inactividad sin escribir scripts de implementación.
¿Cuánto tiempo debería tardar una canalización de CI Laravel?
Menos de cinco minutos para el caso común, o los desarrolladores comenzarán a evitarlo. Ejecute Pest en paralelo, almacene en caché Composer dependencias y mueva las pruebas lentas del navegador a un trabajo nocturno en lugar de bloquear cada PR.
¿Son seguras las migraciones de bases de datos con implementaciones sin tiempo de inactividad?
Sí, con el patrón expandir/contraer: primero realice cambios adicionales, implemente código que funcione con ambos esquemas y elimine las columnas antiguas en una versión posterior. Mantenga los cambios destructivos en su propia implementación y tome una instantánea previa a la implementación (automática en Cipi 5) para que los errores sean reversibles.
¿Es seguro implementar los viernes?
Con pequeñas diferencias, un proceso ecológico, controles de estado y reversión con un solo comando, sí. El temor del viernes es un síntoma de implementaciones manuales de grandes lotes; arregla el proceso y el día de la semana deja de importar.