From dfab4f4a33f3d1686ebfad77198c9d6b874a4cd7 Mon Sep 17 00:00:00 2001 From: ochenstarik-ui Date: Mon, 10 Aug 2026 13:34:38 +0700 Subject: [PATCH] feat: Set PROGRAM_VERSION in dotnet publish and msix --- .github/workflows/linux-release.yml | 30 +++++++++++++++--- build/windows/Build-Installer.ps1 | 48 +++++++++++++++++++++-------- 2 files changed, 61 insertions(+), 17 deletions(-) diff --git a/.github/workflows/linux-release.yml b/.github/workflows/linux-release.yml index 93b8327..65bfaf7 100644 --- a/.github/workflows/linux-release.yml +++ b/.github/workflows/linux-release.yml @@ -70,14 +70,25 @@ jobs: with: dotnet-version: 10.0.x + - name: Set Version + id: version + shell: bash + run: | + if [[ "${GITHUB_REF}" == refs/tags/* ]]; then + VERSION="${GITHUB_REF_NAME#v}" + else + VERSION="0.2.0-dev" + fi + echo "version=${VERSION}" >> $GITHUB_OUTPUT + - name: Publish agent - run: dotnet publish src/ServerMonitorManager.Agent/ServerMonitorManager.Agent.csproj --configuration Release --runtime ${{ matrix.runtime }} --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true -p:RestoreLockedMode=true -o out/agent + run: dotnet publish src/ServerMonitorManager.Agent/ServerMonitorManager.Agent.csproj --configuration Release --runtime ${{ matrix.runtime }} --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true -p:RestoreLockedMode=true -p:Version=${{ steps.version.outputs.version }} -o out/agent - name: Publish control - run: dotnet publish src/ServerMonitorManager.Control/ServerMonitorManager.Control.csproj --configuration Release --runtime ${{ matrix.runtime }} --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true -p:RestoreLockedMode=true -o out/control + run: dotnet publish src/ServerMonitorManager.Control/ServerMonitorManager.Control.csproj --configuration Release --runtime ${{ matrix.runtime }} --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true -p:RestoreLockedMode=true -p:Version=${{ steps.version.outputs.version }} -o out/control - name: Publish provisioning helper - run: dotnet publish src/ServerMonitorManager.Provisioning.Helper/ServerMonitorManager.Provisioning.Helper.csproj --configuration Release --runtime ${{ matrix.runtime }} --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true -p:RestoreLockedMode=true -o out/provisioning-helper + run: dotnet publish src/ServerMonitorManager.Provisioning.Helper/ServerMonitorManager.Provisioning.Helper.csproj --configuration Release --runtime ${{ matrix.runtime }} --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true -p:RestoreLockedMode=true -p:Version=${{ steps.version.outputs.version }} -o out/provisioning-helper - name: Package shell: bash @@ -146,9 +157,20 @@ jobs: "test_certificate=true" >> $env:GITHUB_OUTPUT } + - name: Set Version + id: version + shell: bash + run: | + if [[ "${GITHUB_REF}" == refs/tags/* ]]; then + VERSION="${GITHUB_REF_NAME#v}" + else + VERSION="0.2.0-dev" + fi + echo "version=${VERSION}" >> $GITHUB_OUTPUT + - name: Build signed MSIX shell: pwsh - run: ./build/windows/Build-Installer.ps1 -CertificatePath '${{ steps.signing.outputs.certificate }}' -CertificatePassword '${{ steps.signing.outputs.password }}' + run: ./build/windows/Build-Installer.ps1 -CertificatePath '${{ steps.signing.outputs.certificate }}' -CertificatePassword '${{ steps.signing.outputs.password }}' -Version '${{ steps.version.outputs.version }}' - name: Include test certificate if: steps.signing.outputs.test_certificate == 'true' diff --git a/build/windows/Build-Installer.ps1 b/build/windows/Build-Installer.ps1 index e398ebf..e7ab61b 100644 --- a/build/windows/Build-Installer.ps1 +++ b/build/windows/Build-Installer.ps1 @@ -5,6 +5,9 @@ param( [Parameter(Mandatory = $true)] [string]$CertificatePassword, + [Parameter(Mandatory = $false)] + [string]$Version, + [string]$OutputDirectory = 'artifacts/windows-installer' ) @@ -38,19 +41,38 @@ try { dotnet restore $project -p:Platform=x64 -p:PublishReadyToRun=false -p:RestoreLockedMode=true if ($LASTEXITCODE -ne 0) { throw 'dotnet restore failed' } - dotnet publish $project ` - --configuration Release ` - --runtime win-x64 ` - --no-restore ` - -p:Platform=x64 ` - -p:PublishReadyToRun=false ` - -p:GenerateAppxPackageOnBuild=true ` - -p:AppxPackageSigningEnabled=true ` - -p:PackageCertificateThumbprint=$($signingCertificate.Thumbprint) ` - -p:AppxBundle=Never ` - -p:AppxSymbolPackageEnabled=false ` - -p:UapAppxPackageBuildMode=SideloadOnly ` - -p:AppxPackageDir="$appPackages\" + if ($Version) { + $dotnetArgs += "-p:Version=$Version" + $dotnetArgs += "-p:AppxPackageVersion=$Version.0" + dotnet publish $project ` + --configuration Release ` + --runtime win-x64 ` + --no-restore ` + -p:Platform=x64 ` + -p:PublishReadyToRun=false ` + -p:GenerateAppxPackageOnBuild=true ` + -p:AppxPackageSigningEnabled=true ` + -p:PackageCertificateThumbprint=$($signingCertificate.Thumbprint) ` + -p:AppxBundle=Never ` + -p:AppxSymbolPackageEnabled=false ` + -p:UapAppxPackageBuildMode=SideloadOnly ` + -p:AppxPackageDir="$appPackages\" ` + -p:Version=$Version + } else { + dotnet publish $project ` + --configuration Release ` + --runtime win-x64 ` + --no-restore ` + -p:Platform=x64 ` + -p:PublishReadyToRun=false ` + -p:GenerateAppxPackageOnBuild=true ` + -p:AppxPackageSigningEnabled=true ` + -p:PackageCertificateThumbprint=$($signingCertificate.Thumbprint) ` + -p:AppxBundle=Never ` + -p:AppxSymbolPackageEnabled=false ` + -p:UapAppxPackageBuildMode=SideloadOnly ` + -p:AppxPackageDir="$appPackages\" + } if ($LASTEXITCODE -ne 0) { throw 'dotnet publish failed' } $package = Get-ChildItem -LiteralPath $appPackages -Recurse -File |