Files
Encelado/TradingBot/GIT_WORKFLOW.md
Alberto Balbo b2f04b6600 Supporto Docker/Unraid: build, healthcheck, docs
Aggiunti Dockerfile multi-stage, .dockerignore e docker-compose.yml per deployment containerizzato (con healthcheck, volumi persistenti, limiti risorse). Script di build per Linux/Mac e Windows. In Program.cs aggiunto endpoint /health e health checks per orchestrazione. Documentazione estesa: guide Unraid, quickstart Docker, workflow Git/DevOps, best practices su sicurezza, backup, monitoring. Progetto ora pronto per deploy e gestione professionale in ambienti Docker/Unraid.
2025-12-12 23:40:34 +01:00

411 lines
6.2 KiB
Markdown

# ?? WORKFLOW: Sviluppo ? Gitea ? Unraid
## Flusso di Lavoro Completo
```
PC Sviluppo ? Git Commit ? Gitea Push ? Unraid Pull ? Docker Deploy
```
---
## ?? STEP BY STEP
### 1. Sviluppo Locale (PC)
```sh
# Lavora sul codice
code .
# Test locale
dotnet run
# Oppure
docker-compose up
# Verifica funzionamento
http://localhost:8080
```
### 2. Commit e Push su Gitea
```sh
# Status modifiche
git status
# Stage files
git add .
# Commit
git commit -m "Feature: Descrizione modifiche"
# Push su Gitea
git push origin main
```
### 3. Deploy su Unraid
#### Opzione A: Automatico (Portainer Webhook)
**Setup iniziale** (una volta):
```
1. Portainer ? Stacks ? tradingbot ? Webhooks
2. Create webhook
3. Copy URL
4. Gitea ? Settings ? Webhooks ? Add Webhook
5. Paste URL
6. Trigger: Push events
7. Save
```
**Uso**: Ogni push su Gitea ? Auto-deploy su Unraid!
#### Opzione B: Manuale (SSH)
```sh
# SSH su Unraid
ssh root@[UNRAID-IP]
# Vai nella directory
cd /mnt/user/appdata/tradingbot/TradingBot
# Pull modifiche
git pull origin main
# Rebuild e restart
docker-compose down
docker-compose build
docker-compose up -d
```
#### Opzione C: Script Automatico
Crea `/root/scripts/deploy-tradingbot.sh`:
```sh
#!/bin/bash
cd /mnt/user/appdata/tradingbot/TradingBot
echo "?? Pulling latest changes..."
git pull origin main
if [ $? -eq 0 ]; then
echo "?? Rebuilding container..."
docker-compose down
docker-compose build
docker-compose up -d
echo "? Deployment completed!"
else
echo "? Git pull failed!"
exit 1
fi
```
Usa:
```sh
chmod +x /root/scripts/deploy-tradingbot.sh
/root/scripts/deploy-tradingbot.sh
```
---
## ?? WORKFLOW GIORNALIERO
### Mattina - Modifiche
```sh
# PC
git pull origin main # Sync
code . # Sviluppa
dotnet run # Test
```
### Pomeriggio - Deploy
```sh
# PC
git add .
git commit -m "Daily improvements"
git push origin main
# Unraid (se non auto-deploy)
ssh root@unraid
/root/scripts/deploy-tradingbot.sh
```
### Sera - Monitoring
```sh
# Check logs
docker logs tradingbot -f
# Check stats
docker stats tradingbot
# Backup (opzionale)
/root/scripts/backup-tradingbot.sh
```
---
## ?? BRANCHING STRATEGY
### Main Branch (Production)
```sh
# Solo codice stabile e testato
git checkout main
git pull origin main
```
### Development Branch
```sh
# Crea branch per nuove feature
git checkout -b feature/nome-feature
# Sviluppa e testa
# ...
# Merge in main quando pronto
git checkout main
git merge feature/nome-feature
git push origin main
```
### Hotfix
```sh
# Per fix urgenti
git checkout -b hotfix/descrizione
# Fix
git checkout main
git merge hotfix/descrizione
git push origin main
```
---
## ?? RELEASE VERSIONING
### Tagging
```sh
# Tag versione
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0
# Build con tag
docker build -t tradingbot:v1.0.0 .
docker tag tradingbot:v1.0.0 tradingbot:latest
```
### Rollback
```sh
# Lista tags
git tag -l
# Checkout versione precedente
git checkout v0.9.0
# Deploy versione specifica
docker-compose down
docker-compose build
docker-compose up -d
```
---
## ?? BEST PRACTICES
### 1. Non Committare Secrets
```sh
# .gitignore già configurato per:
appsettings.Development.json
*.env
*.key
```
### 2. Test Prima di Push
```sh
# Sempre test locale prima
dotnet build
dotnet test # Se hai tests
docker-compose up # Test container
```
### 3. Commit Messages Descrittivi
```sh
# ? Buoni
git commit -m "Fix: Sidebar toggle button not working"
git commit -m "Feature: Add Docker support"
git commit -m "Docs: Update deployment guide"
# ? Cattivi
git commit -m "fix"
git commit -m "update"
git commit -m "changes"
```
### 4. Pull Prima di Push
```sh
# Sempre sync prima
git pull origin main
# Risolvi conflitti se presenti
git push origin main
```
---
## ?? TROUBLESHOOTING
### Conflitto Git
```sh
# Pull con conflitti
git pull origin main
# Risolvi manualmente i file in conflitto
# Cerca <<<<<<< HEAD
# Dopo risolto
git add .
git commit -m "Resolve merge conflicts"
git push origin main
```
### Push Rifiutato
```sh
# Se remote è avanti
git pull --rebase origin main
git push origin main
```
### Reset Completo (ATTENZIONE!)
```sh
# Solo in caso di emergenza
git fetch origin
git reset --hard origin/main
```
---
## ?? MONITORING WORKFLOW
### Check Health
```sh
# Local
curl http://localhost:8080/health
# Unraid
curl http://[UNRAID-IP]:8080/health
```
### View Logs
```sh
# Real-time
docker logs -f tradingbot
# Last 100 lines
docker logs --tail 100 tradingbot
# Since timestamp
docker logs --since 2024-12-12T10:00:00 tradingbot
```
### Resource Usage
```sh
# Stats
docker stats tradingbot
# Processes
docker top tradingbot
```
---
## ?? CHECKLIST COMPLETO
### Pre-Development
- [ ] Git repository synced (`git pull`)
- [ ] Branch corretto (`git branch`)
- [ ] Dependencies updated (`dotnet restore`)
### Development
- [ ] Codice scritto e testato
- [ ] Build successful (`dotnet build`)
- [ ] Test locale OK (`dotnet run`)
- [ ] Docker test OK (`docker-compose up`)
### Pre-Commit
- [ ] Codice formattato
- [ ] No secrets committati
- [ ] .gitignore aggiornato
- [ ] README aggiornato se necessario
### Commit & Push
- [ ] `git status` verificato
- [ ] Commit message descrittivo
- [ ] Push successful
- [ ] Verifica su Gitea web UI
### Deployment
- [ ] Pull su Unraid OK
- [ ] Docker build successful
- [ ] Container running
- [ ] Health check passing
- [ ] WebUI accessibile
### Post-Deployment
- [ ] Logs verificati
- [ ] Nessun errore critico
- [ ] Funzionalità testate
- [ ] Performance OK
---
## ?? MAINTENANCE
### Giornaliero
- Check logs per errori
- Verifica health endpoint
- Monitor resource usage
### Settimanale
- Git pull updates
- Review commits
- Check disk space
### Mensile
- Full backup
- Review performance metrics
- Update dependencies
- Security audit
---
## ?? COMANDI RAPIDI
```sh
# Development
git status
git add .
git commit -m "message"
git push origin main
# Local Test
dotnet run
docker-compose up -d
# Unraid Deploy
ssh root@unraid "/root/scripts/deploy-tradingbot.sh"
# Check Status
docker ps | grep tradingbot
docker logs tradingbot --tail 50
# Restart
docker restart tradingbot
# Update
git pull && docker-compose up -d --build
```
---
**?? Workflow pronto! Sviluppo ? Gitea ? Unraid automatizzato!**