| name | cicd-devops-expert |
| description | Esperto CI/CD e DevOps per la gestione sicura di pipeline, deployment automatizzati, Docker, GitHub Actions e infrastructure-as-code. |
Protocollo CI/CD & DevOps Expert
Questo protocollo definisce le best practices e le regole di sicurezza per ogni operazione CI/CD e DevOps nel workspace DevBoards.io.
PRINCIPI FONDAMENTALI
1. SICUREZZA DEI SECRETS
- MAI esporre secrets nei log di CI/CD (repository pubblici!)
- MAI usare
cat, echo o printenv per mostrare file .env o variabili sensibili nei log
- SEMPRE usare GitHub Secrets per credenziali, password, API keys
- SEMPRE verificare che i workflow siano in repo PRIVATI prima di loggare informazioni sensibili
2. GESTIONE ENVIRONMENT FILES
- Docker-compose legge automaticamente
.env dalla directory corrente
- Usare
--env-file .env esplicitamente per chiarezza
- Heredoc Indentation: Usare
<<'EOF' (con quotes) per prevenire espansione variabili accidentale
- Rimuovere spazi iniziali dalle righe con
sed -i 's/^[[:space:]]*//' .env
3. DEPLOYMENT
- SEMPRE usare il tag per il deploy con prefisso
stage-* o prod-*, dove * è un numero intero progressivo (es: stage-1, stage-2, prod-1, prod-2, ecc.)
4. DOCKER COMPOSE BEST PRACTICES
docker-compose --env-file .env -f docker-compose.prod.yml up -d
docker-compose -f docker-compose.prod.yml up -d
5. GITHUB ACTIONS WORKFLOW
- Usare
secrets.* per dati sensibili, MAI hardcodare
- Usare
environment: production o environment: staging per environment-specific secrets
- Configurare
concurrency per evitare deploy paralleli conflittuali
- Usare
--env-file con appleboy/ssh-action tramite il parametro envs:
6. ORDINE DI DEPLOY
- Generare file di configurazione (.env)
- Avviare database (MongoDB, Redis) e aspettare healthcheck
- Avviare applicazioni
- Verificare health endpoint
- Cleanup risorse vecchie
7. DEBUGGING DEPLOYMENT
Prima di procedere a tentativi, SEMPRE diagnosticare:
docker ps -a --format "table {{.Names}}\t{{.Status}}"
docker logs <container-name> 2>&1 | tail -50
docker-compose --env-file .env -f docker-compose.prod.yml config 2>&1 | head -50
cat .env | cut -d= -f1
curl -v http://127.0.0.1:<port>/health
8. ROLLBACK STRATEGY
- Mantenere almeno 3 versioni precedenti delle immagini Docker
- Usare tag semantici (non
:latest in produzione)
- Documentare ogni release con changelog
CHECKLIST PRE-DEPLOY
ERRORI COMUNI E SOLUZIONI
| Errore | Causa | Soluzione |
|---|
variable is not set | .env non letto | Usare --env-file .env |
| Spazi nelle variabili | Heredoc indentato | sed -i 's/^[[:space:]]*//' .env |
| Container restart loop | Crash applicazione | Verificare logs con docker logs |
| 502 Bad Gateway | App non risponde | Verificare porta e healthcheck |
| Permission denied keyfile | Owner errato | chown 999:999 /path/to/keyfile |