7 Commits

Author SHA1 Message Date
Alessio Dal Santo b1f83aa7ab [Fix] Corretto sistema di versioning per container Docker
- Disabilitato target MSBuild GenerateVersionJson durante build CI/CD

- Aggiunta condizione: non esegue se ContinuousIntegrationBuild=true

- Aggiornato Dockerfile per usare /p:ContinuousIntegrationBuild=true

- Previene sovrascrittura del version.json generato dal workflow Gitea

- Risolve problema: container mostra v1.0.0-dev invece della versione da git tag
2026-02-17 14:32:05 +01:00
Alessio Dal Santo 20ca84e4f7 [Fix] Risolto problema SQLite in container Docker Linux
- Cambiato immagine base da Alpine a Debian per migliore compatibilità SQLite

- Aggiunto SQLitePCLRaw.bundle_e_sqlite3 per librerie native cross-platform

- Installato sqlite3 e libsqlite3-dev in Debian

- Risolve definitivamente: 'Error loading shared library libe_sqlite3.so'
2026-02-17 12:34:44 +01:00
Alessio Dal Santo 91704eb944 [Fix] Aggiunta libreria SQLite nativa al container Docker Linux
- Installato sqlite-libs in Alpine per supportare Microsoft.Data.Sqlite

- Aggiunto curl per healthcheck

- Risolve errore: 'Error loading shared library libe_sqlite3.so'
2026-02-17 12:19:17 +01:00
Alessio Dal Santo 3abfed91e1 [Feature] Implementato sistema di generazione automatica version.json
- Aggiunto MSBuild target che genera version.json automaticamente prima di ogni build

- Versione estratta dal tag git più recente (git describe --tags)

- Rimosso version.json dal tracking git (file generato automaticamente)

- Aggiornato .gitignore per escludere version.json

- Il file viene ora rigenerato ad ogni build con versione, commit SHA, branch e timestamp corretti
2026-02-17 11:20:57 +01:00
Alessio Dal Santo 9d146d521e [Fix] Risolto errore NETSDK1047 nella build Docker Windows
- Aggiunto --runtime win-x64 al comando restore

- Specificato -r win-x64 --self-contained false nella publish

- Il restore ora genera project.assets.json per net9.0/win-x64

- Sintassi corretta: --self-contained false invece di /p:SelfContained=false
2026-02-16 16:04:36 +01:00
Alessio Dal Santo 2e25b451c9 [Fix] Risolto errore NETSDK1067 nella build Docker Windows
- Sostituito /p:UseAppHost=false con /p:SelfContained=false in entrambi i Dockerfile

- .NET 9.0 richiede AppHost per applicazioni self-contained

- SelfContained=false è appropriato per container Docker con runtime separato

- Fix applicato sia a Dockerfile (Linux) che Dockerfile.windows
2026-02-16 15:56:02 +01:00
Alessio Dal Santo 201a15de1f Test auto-aggiornamento container 2026-02-16 15:48:40 +01:00
7 changed files with 65 additions and 18 deletions
+4
View File
@@ -1,6 +1,10 @@
# Created by https://www.toptal.com/developers/gitignore/api/csharp,visualstudiocode,visualstudio
# Edit at https://www.toptal.com/developers/gitignore?templates=csharp,visualstudiocode,visualstudio
# Data-Coupler specific
# Version file generato automaticamente durante il build
Data_Coupler/wwwroot/version.json
### Csharp ###
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
+1
View File
@@ -15,6 +15,7 @@
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.3" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.5" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="9.0.3" />
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.1.10" />
<PackageReference Include="System.Data.Odbc" Version="9.0.3" />
</ItemGroup>
+45
View File
@@ -42,4 +42,49 @@
</Content>
</ItemGroup>
<!-- Target per generare automaticamente version.json prima del build -->
<!-- SOLO per sviluppo locale, NON in CI/CD (il workflow lo genera prima del Docker build) -->
<Target Name="GenerateVersionJson" BeforeTargets="BeforeBuild;BeforeRebuild"
Condition="'$(ContinuousIntegrationBuild)' != 'true' AND '$(SkipVersionGeneration)' != 'true'">
<!-- Esegui git per ottenere il tag più recente e informazioni commit -->
<Exec Command="git describe --tags --abbrev=0 2>nul" ConsoleToMSBuild="true" IgnoreExitCode="true">
<Output TaskParameter="ConsoleOutput" PropertyName="GitLatestTag" />
</Exec>
<Exec Command="git rev-parse --short HEAD" ConsoleToMSBuild="true" IgnoreExitCode="true">
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitSha" />
</Exec>
<Exec Command="git rev-parse --abbrev-ref HEAD" ConsoleToMSBuild="true" IgnoreExitCode="true">
<Output TaskParameter="ConsoleOutput" PropertyName="GitBranch" />
</Exec>
<!-- Estrai la versione dal tag (rimuovi il prefisso 'v') -->
<PropertyGroup>
<ActualVersion Condition="'$(GitLatestTag)' != '' and $(GitLatestTag.StartsWith('v'))">$(GitLatestTag.Substring(1))</ActualVersion>
<ActualVersion Condition="'$(GitLatestTag)' != '' and !$(GitLatestTag.StartsWith('v'))">$(GitLatestTag)</ActualVersion>
<ActualVersion Condition="'$(GitLatestTag)' == ''">1.0.0-dev</ActualVersion>
<ActualCommitSha Condition="'$(GitCommitSha)' != ''">$(GitCommitSha)</ActualCommitSha>
<ActualCommitSha Condition="'$(GitCommitSha)' == ''">unknown</ActualCommitSha>
<ActualBranch Condition="'$(GitBranch)' != ''">$(GitBranch)</ActualBranch>
<ActualBranch Condition="'$(GitBranch)' == ''">local</ActualBranch>
</PropertyGroup>
<!-- Genera il contenuto JSON -->
<PropertyGroup>
<FinalVersionJsonContent>
{
"version": "$(ActualVersion)",
"commitSha": "$(ActualCommitSha)",
"branch": "$(ActualBranch)",
"buildDate": "$([System.DateTime]::Now.ToString('yyyy-MM-dd HH:mm:ss'))",
"buildEnvironment": "Development"
}
</FinalVersionJsonContent>
</PropertyGroup>
<!-- Scrivi il file version.json -->
<WriteLinesToFile File="wwwroot\version.json" Lines="$(FinalVersionJsonContent)" Overwrite="true" />
<Message Text="Generated version.json with version $(ActualVersion) from git tag (local dev build)" Importance="high" />
</Target>
</Project>
+1 -1
View File
@@ -11,7 +11,7 @@
@code {
private int currentCount = 0;
private void IncrementCount()
private void IncrementCount()
{
currentCount++;
}
-7
View File
@@ -1,7 +0,0 @@
{
"version": "2.2.0",
"commitSha": "01f7846",
"branch": "development",
"buildDate": "2026-02-02",
"buildEnvironment": "Local"
}
+12 -8
View File
@@ -20,24 +20,28 @@ COPY . .
# Build del progetto principale
WORKDIR "/src/Data_Coupler"
RUN dotnet build "Data_Coupler.csproj" -c Release -o /app/build
RUN dotnet build "Data_Coupler.csproj" -c Release -o /app/build /p:ContinuousIntegrationBuild=true
# Stage 2: Publish
FROM build AS publish
RUN dotnet publish "Data_Coupler.csproj" -c Release -o /app/publish \
/p:UseAppHost=false \
/p:SelfContained=false \
/p:PublishTrimmed=false \
/p:PublishSingleFile=false
/p:PublishSingleFile=false \
/p:ContinuousIntegrationBuild=true
# Stage 3: Runtime
FROM mcr.microsoft.com/dotnet/aspnet:9.0-alpine AS final
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS final
WORKDIR /app
# Installa le dipendenze necessarie per ExcelDataReader e altre librerie
RUN apk add --no-cache \
# Installa le dipendenze necessarie per ExcelDataReader e SQLite
RUN apt-get update && apt-get install -y \
libgdiplus \
icu-libs \
&& rm -rf /var/cache/apk/*
libc6-dev \
sqlite3 \
libsqlite3-dev \
curl \
&& rm -rf /var/lib/apt/lists/*
# Crea la directory per il database con i permessi corretti
RUN mkdir -p /var/lib/Data_Coupler && \
+2 -2
View File
@@ -13,7 +13,7 @@ COPY ["Components/Components.csproj", "Components/"]
COPY ["nuget.config", "./"]
# Ripristina le dipendenze per tutti i progetti con package cache ultra-corto
RUN dotnet restore "Data_Coupler/Data_Coupler.csproj" --disable-parallel --packages /p
RUN dotnet restore "Data_Coupler/Data_Coupler.csproj" --runtime win-x64 --disable-parallel --packages /p
# Copia tutto il codice sorgente
COPY ["Data_Coupler/", "Data_Coupler/"]
@@ -27,7 +27,7 @@ RUN dotnet build "Data_Coupler.csproj" -c Release -o /o --no-restore
# Stage 2: Publish
FROM build AS publish
RUN dotnet publish "Data_Coupler.csproj" -c Release -o /p --no-restore /p:UseAppHost=false
RUN dotnet publish "Data_Coupler.csproj" -c Release -o /p --no-restore -r win-x64 --self-contained false
# Stage 3: Runtime
FROM mcr.microsoft.com/dotnet/aspnet:9.0-nanoserver-ltsc2022 AS final