CI/CD · Flux de travail Git

CI/CD pour Laravel : Flux de travail Git & déploiements sans temps d'arrêt

Par · Dernière mise à jour : · lecture gratuite, pas de paywall

L'écart entre « ça marche sur ma machine » et « ça se déploie en toute sécurité » est plus petit que jamais. Ce guide vous présente un flux de travail Git qui se réduit à une équipe composée d'une seule personne, un pipeline CI copier-coller et les modèles de déploiement sans temps d'arrêt qui rendent les versions du vendredi ennuyeuses.

Dans ce guide
  1. Pourquoi les pipelines sont rentables (même en solo)
  2. Un workflow Git réduit
  3. Le pipeline CI, prêt pour le copier-coller
  4. Options de déploiement sans temps d'arrêt
  5. Après le déploiement
  6. Stratégie de migration et de restauration
  7. FAQ

Pourquoi les pipelines sont rentables (même en solo)

CI/CD n'est pas une cérémonie d'entreprise - c'est l'assurance la moins chère qu'une base de code puisse acheter :

Un workflow Git réduit

Ignorez git-flow sauf si vous expédiez des versions en boîte. Pour les applications Web, les branches basées sur le tronc avec des branches de courte durée l'emportent :

Le pipeline CI, prêt pour le copier-coller

Quatre étapes, chacune échouant rapidement : style, analyse statique, tests, audit de sécurité. Voici un GitHub complet Workflow d'actions pour une application Laravel (déposez-la .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

Notes à voler :

Options de déploiement sans temps d'arrêt

Zéro temps d'arrêt signifie : créer la nouvelle version à côté de l'ancienne, échanger de manière atomique, redémarrer les travailleurs. Trois façons de l'obtenir:

1. Webhook push-to-deploy (par défaut recommandé)

Votre hôte Git appelle un webhook en push ; le serveur crée une nouvelle version dans releases/, court composer install, migrate --force et met en cache, échange le current lien symbolique et redémarre les travailleurs de file d'attente. C'est exactement ce que Cipi configure automatiquement lorsque vous connectez GitHub ou GitLab à une application : déployez les clés, webhook, les versions et le lien symbolique swap inclus, ainsi que les builds d'actifs de nœud sur les instantanés de base de données de déploiement et de pré-déploiement dans Cipi 5. Coût d'installation : uncipi app create.

2. Déploiement piloté par CI (SSH à partir d'actions)

Le pipeline crée des artefacts et les transmet via SSH (Deployer ou rsync + script). Plus de contrôle, plus YAML à posséder - cela en vaut la peine lorsque vous avez besoin de créer des artefacts identiques dans tous les environnements.

3. L'hybride

CI exécute des tests ; en vert, il atteint le déploiement webhook. Vous obtenez des déploiements sécurisés sans déplacer le déploiement logique dans CI. Avec Cipi, cela fait une seule ligne curl à la fin du flux de travail.

Après le déploiement

Stratégie de migration et de restauration

Mettez cela en pratique avec Cipi

Cipi est le déploiement gratuit open-source CLI référencé tout au long de ce guide : une commande transforme un nouveau Ubuntu VPS dans un serveur de production renforcé pour Laravel — Nginx, PHP-FPM ou Octane, MariaDB ou PostgreSQL, files d'attente, planificateur, SSL et déploiements Git sans temps d'arrêt inclus.

wget -O - https://cipi.sh/setup.sh | coup

Questions fréquemment posées

Ai-je besoin de CI/CD en tant que développeur solo Laravel ?

Oui, sans doute plus qu'une équipe, car personne n'examine votre travail. Un pipeline qui exécute l'audit Pint, Larastan, Pest et composer à chaque poussée est une deuxième paire d'yeux infatigable, et les déploiements basés sur webhook signifient que l'expédition cesse d'être un rituel manuel.

Comment puis-je obtenir des déploiements sans temps d'arrêt pour Laravel ?

Utilisez le modèle de versions : créez la nouvelle version dans son propre répertoire, exécutez des migrations et des caches, puis échangez atomiquement un lien symbolique et redémarrez les files d'attente. Des outils tels que Cipi configurent cela automatiquement pour les push GitHub et GitLab, afin que vous obteniez des déploiements sans temps d'arrêt sans écrire de scripts de déploiement.

Combien de temps un pipeline CI Laravel devrait-il prendre ?

Moins de cinq minutes pour le cas courant, ou les développeurs commencent à le contourner. Exécutez Pest en parallèle, mettez en cache les dépendances Composer et déplacez les tests lents du navigateur vers une tâche nocturne au lieu de bloquer chaque PR.

Les migrations de bases de données sont-elles sécurisées avec des déploiements sans temps d'arrêt ?

Oui, avec le modèle d'expansion/contrat : effectuez d'abord des modifications additives, déployez du code qui fonctionne avec les deux schémas et supprimez les anciennes colonnes dans une version ultérieure. Conservez les modifications destructrices dans leur propre déploiement et prenez un instantané de pré-déploiement (automatique dans Cipi 5) afin que les erreurs soient réversibles.

Est-il sécuritaire de déployer le vendredi ?

Avec de petites différences, un pipeline vert, des contrôles de santé et une restauration en une seule commande – oui. La peur du vendredi est un symptôme de déploiements manuels en gros lots ; corrigez le processus et le jour de la semaine n’a plus d’importance.

Continuez à lire