5.7 KiB
5.7 KiB
name, description, disable-model-invocation, layer
| name | description | disable-model-invocation | layer |
|---|---|---|---|
| easypanel-deploy | Deploy completo e automatizado para EasyPanel com validação integrada, monitoring e safety net (auto-rollback) via API oficial. | true | wiki |
EasyPanel Deploy
Deploy completo e automatizado para EasyPanel com validação integrada.
Quando Usar
- Deploy completo de projecto
- Deploy com validação automática
- Deploy com monitoring
- Deploy com safety net (auto-rollback)
- Production deploys críticos
Sintaxe
/easypanel-deploy [--skip-tests] [--force]
Exemplos
# Deploy normal (com tests e validation)
/easypanel-deploy
# Deploy sem tests (CI/CD já rodou)
/easypanel-deploy --skip-tests
# Force deploy (ignorar warnings)
/easypanel-deploy --force
Workflow Completo (9 Steps)
1. Pre-deploy Validation
/easypanel-validate
Gates:
- Score < 7/10 → ABORT (excepto --force)
- Critical issues → ABORT
- Se pass → Continue
2. Run Tests (se não --skip-tests)
npm test
Gates:
- Tests fail → ABORT
- No tests found → WARNING (continue)
- Tests pass → Continue
3. Build Local (test)
docker build --no-cache -t <project>:test .
Checks:
- Build completa sem erros
- Image size < 200MB (Node.js)
- EXPOSE port correcto
Gates:
- Build fail → ABORT
- Image size > 500MB → WARNING (continue com --force)
4. Git Check
git status
Checks:
- Uncommitted changes?
- Untracked files?
Actions:
- Se changes → PROMPT: "Commit agora? [y/N]"
- Se yes →
git add . && git commit -m "deploy: ..." - Se no → ABORT
5. Push to Gitea
git push origin main
Actions:
- Push commits
- Se CI/CD configurado → Aguardar webhook trigger
- Log commit SHA
6. Monitor EasyPanel Deploy
Via API (preferido - sincroniza com GUI):
# Obter token
TOKEN=$(cat /etc/easypanel/.api-token)
# Verificar estado do serviço
curl -s "http://localhost:3000/api/trpc/services.app.inspectService?input=$(echo -n '{"json":{"projectName":"PROJECT","serviceName":"SERVICE"}}' | jq -sRr @uri)" \
-H "Authorization: Bearer $TOKEN"
# Listar todos os serviços do projecto
curl -s "http://localhost:3000/api/trpc/projects.inspectProject?input=$(echo -n '{"json":{"projectName":"PROJECT"}}' | jq -sRr @uri)" \
-H "Authorization: Bearer $TOKEN"
Via SSH (fallback):
# Poll cada 10s (timeout 5min)
docker service ls | grep <service>
docker service ps <service>
Timeline:
- [00:00] Build started
- [01:30] Build complete
- [02:00] Container starting
- [02:15] Health check iniciado
7. Health Check (retry 5x, interval 10s)
curl -f https://<domain>/health
Retry Logic:
- Tentativa 1-5: aguardar 10s entre cada
- Se 200 OK → SUCCESS
- Se 5xx após 5 retries → ROLLBACK
- Se timeout → ROLLBACK
8. Metrics Validation
# Via docker stats ou EasyPanel API
docker stats <container> --no-stream
Checks:
- CPU < 80% (avg 60s)
- Memory < 80% limit
- No errors em logs (últimos 60s)
Gates:
- CPU > 90% → WARNING (potential issue)
- Memory > 90% → WARNING (OOM risk)
- Errors em logs → WARNING + report
9. Success Report
Output:
- Total deploy time
- Build time
- Image size
- Health status
- Metrics snapshot
- URLs (production, health, logs)
Output Format (Success)
🚀 EasyPanel Deploy: <project-name>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⏱️ TIMELINE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[00:00] ✅ Pre-deploy validation (score: 9.2/10)
[00:15] ✅ Tests passed (12/12, 2.3s)
[00:20] ✅ Local build (82MB, 1m 34s)
[00:25] ✅ Git push (commit: a3f5c21)
[01:55] ✅ EasyPanel build started
[03:42] ✅ Container started (dashboard-api-6f9d8)
[03:50] ✅ Health check 1/5: 200 OK
[03:52] ✅ Health check 5/5: 200 OK (stable)
[04:00] ✅ Metrics validated (CPU: 12%, RAM: 45MB/512MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ DEPLOY SUCCESS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Metrics:
- Total time: 4m 0s (vs ~60min manual, -93%)
- Build time: 1m 34s
- Image size: 82MB (-80% vs non-multi-stage)
- Cold start: 2.1s
- Memory usage: 45MB / 512MB (8.8%)
- CPU usage: 12% (avg first 60s)
🌐 Endpoints:
- Production: https://domain.descomplicar.pt
- Health: https://domain.descomplicar.pt/health
📋 Logs:
- EasyPanel: https://easy.descomplicar.pt/services/<service>/logs
- Gitea: https://git.descomplicar.pt/org/repo/actions
🔔 Next Steps:
1. Monitor uptime (first 24h critical)
2. Check error rate (should be <1%)
3. Load testing (optional, recommended)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Output Format (Failed)
❌ DEPLOY FAILED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⏱️ TIMELINE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[00:00] ✅ Pre-deploy validation
[00:15] ✅ Tests passed
[00:20] ✅ Local build
[00:25] ✅ Git push
[01:55] ✅ EasyPanel build started
[03:42]