[Fix] Refactoring calcolo versione CI/CD: usa git describe invece di dotnet msbuild
Problemi risolti: - GitHub Windows: errore PowerShell 'Missing closing )' causato da (cd Dir; cmd) sintassi bash non valida in PowerShell - GitHub Linux: versione 1.0.0 invece di 2.3.2 perche il tag v2.3.2 esiste solo su Gitea e non su GitHub, quindi MinVer trovava il vecchio tag v1.0.0 Soluzione: - Sostituito dotnet msbuild -getProperty:Version con git describe --tags --abbrev=0 che e lo strumento nativo Git per ottenere l'ultimo tag raggiungibile - Funziona identicamente su Linux (bash) e Windows (PowerShell) - Non richiede dotnet installato ne accesso al .git dentro Docker - Rimosso il dotnet build intermedio sul runner (non piu necessario) - Corretti i percorsi version.json: ora usa Data_Coupler/wwwroot/version.json dal root del repo invece di wwwroot/ relativo dopo cd
This commit is contained in:
@@ -38,28 +38,22 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
dotnet-version: '9.0.x'
|
dotnet-version: '9.0.x'
|
||||||
|
|
||||||
- name: Generate version.json with MinVer
|
- name: Calcola versione e genera version.json
|
||||||
run: |
|
run: |
|
||||||
# Fetch all tags for MinVer to work correctly
|
# Calcola versione tramite git describe (non richiede dotnet build)
|
||||||
git fetch --tags --force
|
git fetch --tags --force
|
||||||
|
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
||||||
# Build project to trigger MinVer (calcola versione automaticamente)
|
if [ -z "$LATEST_TAG" ]; then
|
||||||
cd Data_Coupler
|
echo "Warning: Nessun tag Git trovato. Uso fallback."
|
||||||
dotnet build -c Release /p:ContinuousIntegrationBuild=true
|
VERSION="2.3.2"
|
||||||
|
else
|
||||||
# Extract version calculated by MinVer from build output
|
VERSION="${LATEST_TAG#v}"
|
||||||
VERSION=$(dotnet msbuild -getProperty:Version -p:ContinuousIntegrationBuild=true 2>/dev/null | tail -1)
|
|
||||||
|
|
||||||
# Fallback if MinVer fails (no tags)
|
|
||||||
if [ -z "$VERSION" ] || [ "$VERSION" = "0.0.0-alpha.0" ]; then
|
|
||||||
echo "Warning: No git tags found. MinVer returned default. Using fallback."
|
|
||||||
VERSION="2.3.2-alpha.0.$(git rev-list --count HEAD)"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "MinVer calculated version: $VERSION"
|
echo "Versione calcolata: $VERSION (da tag: $LATEST_TAG)"
|
||||||
|
|
||||||
# Create version.json
|
# Genera version.json
|
||||||
cat > wwwroot/version.json <<EOF
|
cat > Data_Coupler/wwwroot/version.json <<EOF
|
||||||
{
|
{
|
||||||
"version": "${VERSION}",
|
"version": "${VERSION}",
|
||||||
"commitSha": "${GITHUB_SHA:0:7}",
|
"commitSha": "${GITHUB_SHA:0:7}",
|
||||||
@@ -70,8 +64,7 @@ jobs:
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
echo "Generated version.json:"
|
echo "Generated version.json:"
|
||||||
cat wwwroot/version.json
|
cat Data_Coupler/wwwroot/version.json
|
||||||
cd ..
|
|
||||||
|
|
||||||
# Esporta la versione come variabile d'ambiente per il Docker build
|
# Esporta la versione come variabile d'ambiente per il Docker build
|
||||||
echo "APP_VERSION=$VERSION" >> "$GITHUB_ENV"
|
echo "APP_VERSION=$VERSION" >> "$GITHUB_ENV"
|
||||||
@@ -181,33 +174,26 @@ jobs:
|
|||||||
dotnet --version
|
dotnet --version
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
|
|
||||||
- name: Generate version.json with MinVer
|
- name: Calcola versione e genera version.json
|
||||||
run: |
|
run: |
|
||||||
# Fetch all tags for MinVer to work correctly
|
# Calcola versione tramite git describe (non richiede dotnet build)
|
||||||
git fetch --tags --force
|
git fetch --tags --force
|
||||||
|
$LATEST_TAG = git describe --tags --abbrev=0 2>$null
|
||||||
# Build project to trigger MinVer
|
if ($LASTEXITCODE -ne 0 -or [string]::IsNullOrWhiteSpace($LATEST_TAG)) {
|
||||||
cd Data_Coupler
|
Write-Host "Warning: Nessun tag Git trovato. Uso fallback."
|
||||||
dotnet build -c Release /p:ContinuousIntegrationBuild=true
|
$VERSION = "2.3.2"
|
||||||
|
} else {
|
||||||
# Extract version calculated by MinVer
|
$VERSION = $LATEST_TAG -replace '^v', ''
|
||||||
$VERSION = dotnet msbuild -getProperty:Version -p:ContinuousIntegrationBuild=true 2>$null | Select-Object -Last 1
|
|
||||||
|
|
||||||
# Fallback if MinVer fails (no tags)
|
|
||||||
if ([string]::IsNullOrWhiteSpace($VERSION) -or $VERSION -eq "0.0.0-alpha.0") {
|
|
||||||
Write-Host "Warning: No git tags found. MinVer returned default. Using fallback."
|
|
||||||
$commitCount = git rev-list --count HEAD
|
|
||||||
$VERSION = "2.3.2-alpha.0.$commitCount"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "MinVer calculated version: $VERSION"
|
Write-Host "Versione calcolata: $VERSION (da tag: $LATEST_TAG)"
|
||||||
|
|
||||||
$COMMIT_SHA = "${{ github.sha }}"
|
$COMMIT_SHA = "${{ github.sha }}"
|
||||||
$SHORT_SHA = $COMMIT_SHA.Substring(0, 7)
|
$SHORT_SHA = $COMMIT_SHA.Substring(0, 7)
|
||||||
$BRANCH = "${{ github.ref_name }}"
|
$BRANCH = "${{ github.ref_name }}"
|
||||||
$BUILD_DATE = (Get-Date).ToUniversalTime().ToString("yyyy-MM-dd HH:mm:ss UTC")
|
$BUILD_DATE = (Get-Date).ToUniversalTime().ToString("yyyy-MM-dd HH:mm:ss UTC")
|
||||||
|
|
||||||
# Create version.json
|
# Genera version.json
|
||||||
$versionJson = @{
|
$versionJson = @{
|
||||||
version = $VERSION
|
version = $VERSION
|
||||||
commitSha = $SHORT_SHA
|
commitSha = $SHORT_SHA
|
||||||
@@ -216,11 +202,10 @@ jobs:
|
|||||||
buildEnvironment = "Gitea Actions"
|
buildEnvironment = "Gitea Actions"
|
||||||
} | ConvertTo-Json
|
} | ConvertTo-Json
|
||||||
|
|
||||||
$versionJson | Out-File -FilePath "wwwroot\version.json" -Encoding UTF8
|
$versionJson | Out-File -FilePath "Data_Coupler\wwwroot\version.json" -Encoding UTF8
|
||||||
|
|
||||||
Write-Host "Generated version.json:"
|
Write-Host "Generated version.json:"
|
||||||
Get-Content "wwwroot\version.json"
|
Get-Content "Data_Coupler\wwwroot\version.json"
|
||||||
cd ..
|
|
||||||
|
|
||||||
# Esporta la versione come variabile d'ambiente per il Docker build
|
# Esporta la versione come variabile d'ambiente per il Docker build
|
||||||
"APP_VERSION=$VERSION" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
"APP_VERSION=$VERSION" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
|
|||||||
@@ -39,15 +39,17 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
dotnet-version: '9.0.x'
|
dotnet-version: '9.0.x'
|
||||||
|
|
||||||
- name: Calcola versione con MinVer
|
- name: Calcola versione
|
||||||
run: |
|
run: |
|
||||||
git fetch --tags --force
|
git fetch --tags --force
|
||||||
VERSION=$(cd Data_Coupler && dotnet msbuild -getProperty:Version -p:ContinuousIntegrationBuild=true 2>/dev/null | tail -1)
|
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
||||||
if [ -z "$VERSION" ] || [ "$VERSION" = "0.0.0-alpha.0" ]; then
|
if [ -z "$LATEST_TAG" ]; then
|
||||||
echo "Warning: MinVer non ha trovato tag. Uso fallback."
|
echo "Warning: Nessun tag Git trovato su questo remote. Uso fallback."
|
||||||
VERSION="2.3.2-alpha.0.$(git rev-list --count HEAD)"
|
VERSION="2.3.2"
|
||||||
|
else
|
||||||
|
VERSION="${LATEST_TAG#v}"
|
||||||
fi
|
fi
|
||||||
echo "Versione calcolata: $VERSION"
|
echo "Versione calcolata: $VERSION (da tag: $LATEST_TAG)"
|
||||||
echo "APP_VERSION=$VERSION" >> "$GITHUB_ENV"
|
echo "APP_VERSION=$VERSION" >> "$GITHUB_ENV"
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
@@ -119,16 +121,17 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
fetch-depth: 0 # Necessario per MinVer: deve percorrere tutta la storia Git per trovare i tag
|
fetch-depth: 0 # Necessario per MinVer: deve percorrere tutta la storia Git per trovare i tag
|
||||||
|
|
||||||
- name: Calcola versione con MinVer
|
- name: Calcola versione
|
||||||
run: |
|
run: |
|
||||||
git fetch --tags --force
|
git fetch --tags --force
|
||||||
$VERSION = (cd Data_Coupler; dotnet msbuild -getProperty:Version -p:ContinuousIntegrationBuild=true 2>$null | Select-Object -Last 1)
|
$LATEST_TAG = git describe --tags --abbrev=0 2>$null
|
||||||
if ([string]::IsNullOrWhiteSpace($VERSION) -or $VERSION -eq "0.0.0-alpha.0") {
|
if ($LASTEXITCODE -ne 0 -or [string]::IsNullOrWhiteSpace($LATEST_TAG)) {
|
||||||
Write-Host "Warning: MinVer non ha trovato tag. Uso fallback."
|
Write-Host "Warning: Nessun tag Git trovato su questo remote. Uso fallback."
|
||||||
$commitCount = git rev-list --count HEAD
|
$VERSION = "2.3.2"
|
||||||
$VERSION = "2.3.2-alpha.0.$commitCount"
|
} else {
|
||||||
|
$VERSION = $LATEST_TAG -replace '^v', ''
|
||||||
}
|
}
|
||||||
Write-Host "Versione calcolata: $VERSION"
|
Write-Host "Versione calcolata: $VERSION (da tag: $LATEST_TAG)"
|
||||||
"APP_VERSION=$VERSION" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
"APP_VERSION=$VERSION" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user