dougkusanagi / laravel-deploy
Simple configurable deployment runner for Laravel applications
Package info
github.com/dougkusanagi/laravel-deploy
Language:Shell
pkg:composer/dougkusanagi/laravel-deploy
Requires
- php: ^8.3
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Executor de deploy simples para aplicações Laravel em servidores Linux.
Instalação
composer require dougkusanagi/laravel-deploy:^0.2
vendor/bin/deploy init
Se o pacote ainda não estiver disponível no Packagist, registre o repositório do GitHub antes de instalar:
composer config repositories.laravel-deploy vcs https://github.com/dougkusanagi/laravel-deploy.git
composer require dougkusanagi/laravel-deploy:^0.2
Edite deploy.config.sh e execute:
vendor/bin/deploy
O pacote também aceita ./deploy.sh quando o projeto mantém um wrapper na raiz.
Configuração
deploy.config.sh é um arquivo Bash confiável carregado antes da atualização do Git. A configuração mínima é:
DEPLOY_BRANCH="${DEPLOY_BRANCH:-main}"
PHP_FPM_SERVICE="${PHP_FPM_SERVICE:-php8.5-fpm}"
WEB_SERVICE="${WEB_SERVICE:-caddy}"
FRONTEND_INSTALL=(npm ci)
FRONTEND_BUILD=(npm run build)
Defina os arrays de frontend como vazios para desativar essas etapas:
FRONTEND_INSTALL=()
FRONTEND_BUILD=()
Também é possível usar as variáveis DEPLOY_BRANCH, PHP_FPM_SERVICE, WEB_SERVICE, DEPLOY_CONFIG_FILE e HEALTHCHECK_URL.
Etapas
O executor impede dois deploys simultâneos, atualiza a branch configurada com
git pull --ff-only, instala dependências PHP sem dev,
executa as etapas de frontend, roda migrations isoladas, cria o link de storage,
recria caches, recarrega os serviços e verifica a inicialização do Laravel.
HEALTHCHECK_URL adiciona uma verificação HTTP.
O próprio Git interrompe a atualização quando alterações locais entram em conflito com o código remoto. Arquivos locais que não impedem o fast-forward não bloqueiam o deploy.
O deploy altera o diretório atual da aplicação. Falhas não desfazem arquivos ou migrations já aplicados; investigue o problema antes de tentar novamente.
Requisitos
- Linux com Bash e flock;
- Git e um remote chamado origin;
- PHP e Composer;
- Node/npm ou outra ferramenta configurada nos arrays de frontend;
- sudo e systemctl quando serviços forem configurados.