diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7d48639..0cd9072 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -36,7 +36,10 @@ jobs: release: runs-on: windows-latest env: - TAG: ${{ inputs.version || github.ref_name }} + # Wie hereingereicht - der naechste Schritt macht daraus RELEASE_TAG. + # Bewusst ein anderer Name: was hier steht, laesst sich spaeter nicht + # ueberschreiben, Eintraege aus env: haben Vorrang vor GITHUB_ENV. + VERSION_INPUT: ${{ inputs.version || github.ref_name }} NOTES: ${{ inputs.notes }} steps: @@ -53,33 +56,47 @@ jobs: with: dotnet-version: '8.0.x' - - name: Build installer + - name: Work out the version shell: pwsh run: | + # Ohne fuehrendes v getippt? Dann eines davor - die Tags heissen v1.0, + # v1.1, und der Downloadlink haengt an dieser Schreibweise. + $tag = $env:VERSION_INPUT.Trim() + if (-not $tag.StartsWith('v')) { $tag = "v$tag" } + # v1.1 -> 1.1.0: MSBuild will drei Stellen sehen. - $parts = @($env:TAG.TrimStart('v').Split('.')) + $parts = @($tag.TrimStart('v').Split('.')) while ($parts.Count -lt 3) { $parts += '0' } - ./build.ps1 -Version ($parts[0..2] -join '.') + + "RELEASE_TAG=$tag" >> $env:GITHUB_ENV + "RELEASE_VERSION=$($parts[0..2] -join '.')" >> $env:GITHUB_ENV + + Write-Host "Publishing $tag as version $($parts[0..2] -join '.')." + + - name: Build installer + shell: pwsh + run: ./build.ps1 -Version $env:RELEASE_VERSION - name: Publish the release shell: pwsh env: GH_TOKEN: ${{ github.token }} run: | - $number = $env:TAG.TrimStart('v') + $tag = $env:RELEASE_TAG + $number = $tag.TrimStart('v') # Text des Releases: was beim Start mitgegeben wurde, sonst die # Beschreibung des Tags, sonst laesst GitHub die Aenderungen auflisten. $notes = $env:NOTES if (-not $notes) { - $notes = (git tag -l --format='%(contents)' $env:TAG | Out-String).Trim() + $notes = (git tag -l --format='%(contents)' $tag | Out-String).Trim() } # Gibt es den Tag noch nicht, legt GitHub ihn auf diesen Stand an. $target = (git rev-parse HEAD).Trim() - $arguments = @( - 'release', 'create', $env:TAG, 'dist/MonkeySetup.exe', + [string[]]$arguments = @( + 'release', 'create', $tag, 'dist/MonkeySetup.exe', '--title', "Monkey $number", '--target', $target ) diff --git a/build.ps1 b/build.ps1 index 3119692..3d9c61d 100644 --- a/build.ps1 +++ b/build.ps1 @@ -28,7 +28,12 @@ if (-not (Get-Command dotnet -ErrorAction SilentlyContinue)) { $env:DOTNET_CLI_TELEMETRY_OPTOUT = 1 $env:DOTNET_NOLOGO = 1 -$versionArgs = if ($Version) { @("-p:Version=$Version") } else { @() } +# Ausdruecklich als Feld halten und einzeln fuellen: das Ergebnis eines +# if-Ausdrucks mit einem einzigen Eintrag kommt als Zeichenkette heraus, und die +# zerlegt PowerShell beim Weiterreichen in einzelne Zeichen - dotnet bekaeme +# dann "- p : V e r s i o n = ...". +[string[]]$versionArgs = @() +if ($Version) { $versionArgs += "-p:Version=$Version" } $staging = Join-Path $PSScriptRoot "build\staging" $payload = Join-Path $PSScriptRoot "src\Monkey.Setup\payload"