# ?? 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!**