CI/CD · Fluxo de trabalho Git

CI/CD para Laravel: Fluxo de trabalho Git e implantações com tempo de inatividade zero

Por · Última atualização: · grátis para ler, sem acesso pago

A lacuna entre “funciona na minha máquina” e “é implantada com segurança” é menor do que nunca. Este guia fornece um fluxo de trabalho Git que pode ser reduzido para uma equipe de apenas uma pessoa, um pipeline de CI copiar e colar e os padrões de implantação com tempo de inatividade zero que tornam os lançamentos de sexta-feira enfadonhos.

Neste guia
  1. Por que os pipelines compensam (mesmo sozinhos)
  2. Um fluxo de trabalho Git que pode ser reduzido
  3. O pipeline de CI, pronto para copiar e colar
  4. Opções de implantação com tempo de inatividade zero
  5. Após a implantação
  6. Estratégia de migrações e reversão
  7. Perguntas frequentes

Por que os pipelines compensam (mesmo sozinhos)

CI/CD não é uma cerimônia empresarial – é o seguro mais barato que uma base de código pode comprar:

Um fluxo de trabalho Git que pode ser reduzido

Ignore o git-flow, a menos que você envie versões em caixa. Para aplicativos da web, baseados em tronco com ramificações de curta duração vencem:

O pipeline de CI, pronto para copiar e colar

Quatro estágios, cada um falhando rapidamente: estilo, análise estática, testes, auditoria de segurança. Aqui está um GitHub completo Fluxo de trabalho de ações para um aplicativo Laravel (coloque-o em .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 valem a pena roubar:

Opções de implantação com tempo de inatividade zero

Tempo de inatividade zero significa: construir a nova versão ao lado da antiga, trocar atomicamente, reiniciar os trabalhadores. Três maneiras de obtê-lo:

1. Webhook push-to-deploy (padrão recomendado)

Seu host Git chama webhook no push; o servidor constrói uma nova versão em releases/, corre composer install, migrate --force e caches, troca o current link simbólico e reinicia os trabalhadores da fila. Isso é exatamente o que Cipi configura automaticamente quando você conecta GitHub ou GitLab a um aplicativo – implantar chaves, webhook, versões e link simbólico swap incluído, além de construções de ativos do Node em snapshots de banco de dados de implantação e pré-implantação em Cipi 5. Custo de configuração: umcipi app create.

2. Implantação orientada por CI (SSH de ações)

O pipeline cria artefatos e os envia por SSH (Deployer ou rsync + script). Mais controle, mais YAML de propriedade — vale a pena quando você precisa criar artefatos idênticos em todos os ambientes.

3. O híbrido

CI executa testes; em verde, atinge a implantação webhook. Você obtém implantações bloqueadas sem mover a implantação lógica em CI. Com Cipi, isso é uma linha curl no final do fluxo de trabalho.

Após a implantação

Estratégia de migrações e reversão

Coloque isso em prática com Cipi

Cipi é o open-source implantar CLI gratuito mencionado ao longo deste guia: um comando transforma um novo Ubuntu VPS em um servidor de produção reforçado para Laravel — Nginx, PHP-FPM ou Octane, MariaDB ou PostgreSQL, filas, agendador, SSL e implantações Git com tempo de inatividade zero incluídas.

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

Perguntas frequentes

Preciso de CI/CD como desenvolvedor solo de Laravel?

Sim – provavelmente mais do que uma equipe faz, porque ninguém analisa seu trabalho. Um pipeline que executa auditorias Pint, Larastan, Pest e composer em cada push é um segundo par de olhos incansável, e implantações baseadas em webhook significam que o envio deixa de ser um ritual manual.

Como obtenho implantações com tempo de inatividade zero para Laravel?

Use o padrão de lançamentos: construa a nova versão em seu próprio diretório, execute migrações e caches, depois troque atomicamente um link simbólico e reinicie os trabalhadores da fila. Ferramentas como Cipi configuram isso automaticamente para pushes GitHub e GitLab, para que você obtenha implantações com tempo de inatividade zero sem escrever scripts de implantação.

Quanto tempo deve durar um pipeline de CI Laravel?

Menos de cinco minutos para o caso comum, ou os desenvolvedores começarão a contorná-lo. Execute o Pest em paralelo, armazene em cache as dependências Composer e mova os testes lentos do navegador para um trabalho noturno em vez de bloquear todos os PR.

As migrações de banco de dados são seguras com implantações sem tempo de inatividade?

Sim, com o padrão de expansão/contração: faça alterações aditivas primeiro, implante código que funcione com ambos os esquemas e remova colunas antigas em uma versão posterior. Mantenha as alterações destrutivas em sua própria implantação e tire um instantâneo pré-implantação (automático em Cipi 5) para que os erros sejam reversíveis.

É seguro implantar às sextas-feiras?

Com pequenas diferenças, um pipeline verde, verificações de integridade e reversão com um comando – sim. O medo da sexta-feira é um sintoma de implantações manuais em grandes lotes; conserte o processo e o dia da semana deixa de importar.

Continue lendo