Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 25 additions & 8 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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
)
Expand Down
7 changes: 6 additions & 1 deletion build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down