- 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)
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.jsonall'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
- Estrae versione da
-
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
IVersionServicecome 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)
- Compila e avvia l'applicazione:
cd Data_Coupler
dotnet run
-
Apri browser: http://localhost:7550
-
Verifica NavMenu: Dovresti vedere "Data_Coupler v2.1.0"
-
Controlla logs: Cerca "Version loaded: v2.1.0"
Test Docker (Produzione)
-
Dopo push su Gitea, verifica workflow completato:
- Vai su Gitea → Repository → Actions
- Controlla che "Generate version.json" sia completato
-
Pull immagine Docker:
docker pull gitea.home-nas-ds.org/alessio/data-coupler:latest
- Avvia container:
docker run -p 7550:8080 gitea.home-nas-ds.org/alessio/data-coupler:latest
-
Verifica versione:
- Browser: http://localhost:7550
- NavMenu: "Data_Coupler v2.1.0 (main-abc1234)"
-
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:
- Modifica
Data_Coupler/Data_Coupler.csproj:
<Version>2.2.0</Version>
<AssemblyVersion>2.2.0.0</AssemblyVersion>
<FileVersion>2.2.0.0</FileVersion>
- Commit e push:
git commit -am "Bump version to 2.2.0"
git push
- 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 versioningData_Coupler/Models/VersionInfo.cs: Modello datiData_Coupler/Services/VersionService.cs: Implementazione servizioData_Coupler/Shared/NavMenu.razor: Integrazione UI
🆘 Supporto e Troubleshooting
In caso di problemi, consulta la sezione "Troubleshooting" in VERSIONING_SYSTEM.md oppure controlla:
- Logs applicazione: Cerca "Version" o "VersionService"
- Logs Gitea Actions: Verifica step "Generate version.json"
- 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