CI/CD para Laravel: Fluxo de trabalho Git e implantações com tempo de inatividade zero
Por Andrea Pollastri · Ú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.
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:
- Repetibilidade: o pipeline executa sempre as mesmas verificações; os humanos não.
- A ansiedade de implantação chega a zero. Quando as implantações são um push e as reversões são um link simbólico, você envia pequenas alterações com frequência, em vez de lotes assustadores, raramente.
- Avaliar aumentos de qualidade porque a CI já detectou os problemas mecânicos antes de um aparência humana.
- O código gerado por IA torna isso não opcional: se os agentes escreverem mais do seu código, o pipeline é o árbitro que mantém os padrões objetivos (mais no desenvolvimento orientado por especificações guia).
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:
mainé sempre implantável. Proteja-o: sem impulsos diretos, os PRs devem ser aprovados IC.- As filiais vivem dias, não semanas.
feature/checkout-vat,fix/queue-timeout- mesclar ou excluir. - Confirmações convencionais (
feat:,fix:,chore:) tornar o histórico escaneável e os registros de alterações automatizáveis. - Lançamentos de tags (
v2026.08.04ou semver) para que você possa sempre responder "o que foi ao vivo na terça-feira?". - PRs são a trilha de auditoria. Mesmo sozinho: uma autoavaliação de dois minutos com CI verde pega um quantidade surpreendente.
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:
- Pint, Larastan, Pest, auditoria – nesta ordem: cheques mais baratos primeiro, então as falhas são rápido.
--parallelem pragas normalmente reduz pela metade o tempo da suíte gratuitamente.composer auditfalha na compilação quando uma dependência tem um CVE conhecido — seu fio de disparo da cadeia de suprimentos (veja o segurança lista de verificação para a seção completa de higiene de dependência, incluindo verificação específica de Laravel com Ponto de verificação).- Adicionar
npm ci && npm run buildcomo um trabalho separado se a construção de seus ativos for não trivial.
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
- Verificações de saúde: verifique as respostas do aplicativo antes de comemorar - Cipi 5 envia a integridade do aplicativo verificações para as quais você pode apontar monitores.
- Teste de fumaça do caminho crítico: um
curlpara a página de login e um para um endpoint autenticado captura a maioria dos estados "implantados, mas quebrados". - Observe as exceções por 15 minutos. Um rastreador self-hosted como Google faz o pós-implantação pico de erro visível imediatamente.
- Notifique a equipe: implantar notificações no Slack ou Telegram fechar o loop (Cipi's os documentos incluem exemplos de notificação de IC prontos).
Estratégia de migrações e reversão
- Expandir/contrair: adicione a nova coluna e o código que escreve ambas primeiro; remova o antigo um é lançado mais tarde. Nunca renomeie no lugar.
- Migrações destrutivas ganham seu próprio lançamento — depois do código que parou de usar o os dados são verificados na produção.
- A reversão do código é o link simbólico de volta à versão anterior; é por isso que os lançamentos o padrão é importante.
- A reversão de dados é um instantâneo. Cipi 5 tira um instantâneo do banco de dados pré-implantação automaticamente, então o pior erro de migração tem um botão de desfazer.
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.
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.