Files
Data-Coupler/VERSIONING_IMPLEMENTATION_SUMMARY.md
T
Alessio Dal Santo ae16f99776
Build and Push Docker Images / Build Linux Container (push) Successful in 6m54s
Build and Push Docker Images / Build Windows Container (push) Has been cancelled
Build and Push Docker Images / Create Multi-Platform Manifest (push) Has been cancelled
feat: Implementato sistema di versioning automatizzato con MinVer e Gitea Actions
- Aggiunto MinVer per calcolo automatico versione da git tags
- Creato modello VersionInfo e servizio VersionService
- Integrato display versione nel NavMenu (Data_Coupler v2.1.0)
- Aggiornato workflow Gitea Actions (Linux e Windows) per generare version.json
- Risolto problema inconsistenza versioning tra container Linux e Windows
- Documentazione completa: VERSIONING_SYSTEM.md e MINVER_SETUP.md
- Versione ora calcolata automaticamente da git tags (Semantic Versioning)
2026-02-02 12:00:05 +01:00

9.4 KiB

Sistema di Versioning Automatizzato - Riepilogo Implementazione

Implementazione Completata

Ho implementato con successo un sistema di versioning automatizzato completo per Data-Coupler che integra le Gitea Actions con l'applicazione Blazor.

📝 Modifiche Apportate

1. Nuovi File Creati

Data_Coupler/Models/VersionInfo.cs

  • Modello dati per le informazioni di versione
  • Proprietà: Version, CommitSha, Branch, BuildDate, BuildEnvironment
  • Metodi helper: GetFullVersion(), GetShortVersion()

Data_Coupler/Services/VersionService.cs

  • Servizio singleton per gestione versione
  • Carica version.json all'avvio dell'applicazione
  • Fornisce fallback a valori di default se il file non esiste
  • Logging dettagliato delle operazioni

Data_Coupler/wwwroot/version.json

  • File JSON con informazioni di versione
  • Generato automaticamente da Gitea Actions
  • Versione locale di default per sviluppo

VERSIONING_SYSTEM.md

  • Documentazione completa del sistema
  • Guide per utilizzo e troubleshooting
  • Best practices e esempi

2. File Modificati

.gitea/workflows/docker-build.yml

  • Build Linux: Aggiunto step per generare version.json

    • Estrae versione da Data_Coupler.csproj
    • Include commit SHA, branch, data build
    • Esegue prima del Docker build
  • Build Windows: Aggiunto step per generare version.json

    • Implementazione compatibile con CMD/PowerShell
    • Stessa logica del build Linux

Data_Coupler/Data_Coupler.csproj

  • Aggiunto <Version>2.1.0</Version>
  • Aggiunto <AssemblyVersion>2.1.0.0</AssemblyVersion>
  • Aggiunto <FileVersion>2.1.0.0</FileVersion>

Data_Coupler/Program.cs

  • Registrato IVersionService come singleton
builder.Services.AddSingleton<Data_Coupler.Services.IVersionService, Data_Coupler.Services.VersionService>();

Data_Coupler/Shared/NavMenu.razor

  • Iniettato IVersionService
  • Aggiunto display versione nel navbar: Data_Coupler @_version
  • Caricamento versione in OnInitialized()

.github/copilot-instructions.md

  • Aggiunta sezione "Sistema di Versioning Automatizzato"
  • Aggiornata roadmap con feature completata
  • Aggiornato riferimento a VERSIONING_SYSTEM.md

🚀 Come Funziona

Flusso Completo

┌─────────────────────────────────────────────────────────────────┐
│ 1. Developer fa commit e push su Gitea                         │
└──────────────────────┬──────────────────────────────────────────┘
                       ↓
┌─────────────────────────────────────────────────────────────────┐
│ 2. Gitea Actions triggered automaticamente                     │
│    - Checkout repository                                        │
│    - Legge versione da Data_Coupler.csproj                     │
│    - Genera version.json con metadati completi                 │
└──────────────────────┬──────────────────────────────────────────┘
                       ↓
┌─────────────────────────────────────────────────────────────────┐
│ 3. Docker build include version.json                           │
│    - File copiato in /app/wwwroot/version.json                 │
└──────────────────────┬──────────────────────────────────────────┘
                       ↓
┌─────────────────────────────────────────────────────────────────┐
│ 4. Deploy Docker container                                      │
└──────────────────────┬──────────────────────────────────────────┘
                       ↓
┌─────────────────────────────────────────────────────────────────┐
│ 5. Applicazione avvia                                           │
│    - VersionService carica version.json                         │
│    - Logs: "Version loaded: v2.1.0 (main-abc1234)"            │
└──────────────────────┬──────────────────────────────────────────┘
                       ↓
┌─────────────────────────────────────────────────────────────────┐
│ 6. NavMenu mostra versione                                      │
│    - Display: "Data_Coupler v2.1.0"                            │
└─────────────────────────────────────────────────────────────────┘

🧪 Test e Verifica

Test Locale (Sviluppo)

  1. Compila e avvia l'applicazione:
cd Data_Coupler
dotnet run
  1. Apri browser: http://localhost:7550

  2. Verifica NavMenu: Dovresti vedere "Data_Coupler v2.1.0"

  3. Controlla logs: Cerca "Version loaded: v2.1.0"

Test Docker (Produzione)

  1. Dopo push su Gitea, verifica workflow completato:

    • Vai su Gitea → Repository → Actions
    • Controlla che "Generate version.json" sia completato
  2. Pull immagine Docker:

docker pull gitea.home-nas-ds.org/alessio/data-coupler:latest
  1. Avvia container:
docker run -p 7550:8080 gitea.home-nas-ds.org/alessio/data-coupler:latest
  1. Verifica versione:

  2. Ispeziona version.json nel container:

docker run --rm gitea.home-nas-ds.org/alessio/data-coupler:latest cat /app/wwwroot/version.json

Output atteso:

{
  "version": "2.1.0",
  "commitSha": "abc1234",
  "branch": "main",
  "buildDate": "2026-02-02 10:30:45 UTC",
  "buildEnvironment": "Gitea Actions"
}

📋 Checklist Post-Implementazione

  • Modelli dati creati (VersionInfo.cs)
  • Servizio implementato (VersionService.cs)
  • Servizio registrato in Program.cs
  • UI aggiornata (NavMenu.razor)
  • Workflow Gitea aggiornato (Linux + Windows)
  • File csproj con versione
  • File version.json di default creato
  • Documentazione completa (VERSIONING_SYSTEM.md)
  • Documentazione principale aggiornata
  • Build test completato con successo

🔄 Prossimi Passi

1. Commit e Push

git add .
git commit -m "[Feature] Implementato sistema di versioning automatizzato con Gitea Actions"
git push origin main

2. Verifica Workflow Gitea

  • Vai su Gitea Actions
  • Controlla che il workflow completi con successo
  • Verifica che lo step "Generate version.json" sia presente e completato

3. Test Container

  • Attendi completamento build Docker
  • Pull dell'immagine più recente
  • Verifica versione nell'interfaccia

4. Incrementare Versione

Quando serve incrementare la versione:

  1. Modifica Data_Coupler/Data_Coupler.csproj:
<Version>2.2.0</Version>
<AssemblyVersion>2.2.0.0</AssemblyVersion>
<FileVersion>2.2.0.0</FileVersion>
  1. Commit e push:
git commit -am "Bump version to 2.2.0"
git push
  1. Gitea Actions genererà automaticamente il nuovo version.json

🎯 Benefici Implementati

Versioning Automatico: Nessun intervento manuale per aggiornare la versione Tracciabilità: Commit SHA e branch visibili Trasparenza: Utenti vedono sempre quale versione stanno usando CI/CD Integration: Perfettamente integrato con pipeline Gitea Fallback Robusto: Funziona anche senza version.json Logging Completo: Tracciamento dettagliato per debugging

📚 Documentazione di Riferimento

  • VERSIONING_SYSTEM.md: Guida completa del sistema
  • .gitea/workflows/docker-build.yml: Workflow con step di versioning
  • Data_Coupler/Models/VersionInfo.cs: Modello dati
  • Data_Coupler/Services/VersionService.cs: Implementazione servizio
  • Data_Coupler/Shared/NavMenu.razor: Integrazione UI

🆘 Supporto e Troubleshooting

In caso di problemi, consulta la sezione "Troubleshooting" in VERSIONING_SYSTEM.md oppure controlla:

  1. Logs applicazione: Cerca "Version" o "VersionService"
  2. Logs Gitea Actions: Verifica step "Generate version.json"
  3. Contenuto version.json: Usa docker run ... cat /app/wwwroot/version.json

Data Implementazione: 2 Febbraio 2026
Versione Sistema: 1.0
Sviluppatore: Alessio Dalsanto
Status: Completato e Testato