Skip to content

release: prepare Sally v1.0.23 #75

release: prepare Sally v1.0.23

release: prepare Sally v1.0.23 #75

Workflow file for this run

name: Release Build
on:
push:
tags:
- 'v*'
workflow_dispatch:
permissions:
contents: write
jobs:
build:
name: Build ${{ matrix.arch }}
runs-on: windows-2022
strategy:
fail-fast: false
matrix:
include:
- arch: x64
cmake_arch: x64
- arch: x86
cmake_arch: Win32
- arch: ARM64
cmake_arch: ARM64
defaults:
run:
shell: pwsh
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Configure CMake (${{ matrix.arch }})
run: cmake -B build -A ${{ matrix.cmake_arch }} -DSAL_UNDER_CI=ON -DSAL_BUILD_DEMOPLUG=OFF
- name: Build RelWithDebInfo
run: cmake --build build --config RelWithDebInfo --target populate -j
- name: Build host translator (cross-architecture language pack support)
if: matrix.arch == 'ARM64'
run: |
cmake -B build-host -A x64 -DSAL_UNDER_CI=ON -DSAL_BUILD_DEMOPLUG=OFF
cmake --build build-host --config RelWithDebInfo --target translator -j
- name: Build language packs
run: |
$splat = @{
BuildRoot = "build/out/sally/RelWithDebInfo_${{ matrix.arch }}"
SkipValidation = $true
AllowSeedRejections = $true
}
if ('${{ matrix.arch }}' -eq 'ARM64') {
$splat['TranslatorExe'] = 'build-host/out/sally/RelWithDebInfo_x64/utils/translator.exe'
}
& .\tools\localization\build_language_packs.ps1 @splat
- name: Create runtime zip and collect symbols
run: |
$version = "${{ github.ref_name }}"
$outputRoot = "build/out/sally/RelWithDebInfo_${{ matrix.arch }}"
$runtimeDir = Join-Path $env:RUNNER_TEMP "sally-runtime-${{ matrix.arch }}"
$pdbDir = Join-Path $PWD "pdb-${{ matrix.arch }}"
Remove-Item -Recurse -Force $runtimeDir,$pdbDir -ErrorAction SilentlyContinue
New-Item -ItemType Directory -Path $runtimeDir,$pdbDir | Out-Null
Copy-Item -Path "$outputRoot/*" -Destination $runtimeDir -Recurse -Force
# GPLv2 section 1 requires the license text to travel with the binaries,
# and NOTICE/AUTHORS carry the Open Salamander attribution.
Copy-Item -Path LICENSE,NOTICE,AUTHORS -Destination $runtimeDir -Force
$runtimeDocDir = Join-Path $runtimeDir "doc"
New-Item -ItemType Directory -Path $runtimeDocDir -Force | Out-Null
Copy-Item -Path doc/AUTHORS,doc/third_party.txt -Destination $runtimeDocDir -Force
# Collect symbols into a dedicated folder and remove them from runtime package.
Get-ChildItem -Path $runtimeDir -Recurse -File -Filter *.pdb | ForEach-Object {
$relative = $_.FullName.Substring($runtimeDir.Length).TrimStart('\')
$dest = Join-Path $pdbDir $relative
New-Item -ItemType Directory -Path (Split-Path -Parent $dest) -Force | Out-Null
Copy-Item -Path $_.FullName -Destination $dest -Force
Remove-Item -Path $_.FullName -Force
}
$runtimeZip = "Sally-$version-${{ matrix.arch }}.zip"
Compress-Archive -Path "$runtimeDir/*" -DestinationPath $runtimeZip
Write-Host "Created runtime package: $runtimeZip"
Write-Host "Collected symbols in: $pdbDir"
- name: Create translator workspace zip
if: matrix.arch == 'x64'
run: |
$version = "${{ github.ref_name }}"
$outputRoot = "build/out/sally/RelWithDebInfo_${{ matrix.arch }}"
$workspaceDir = Join-Path $env:RUNNER_TEMP "sally-translator-workspace"
$workspaceToolsDir = Join-Path $workspaceDir "tools\localization"
$workspaceDocDir = Join-Path $workspaceDir "doc"
Remove-Item -Recurse -Force $workspaceDir -ErrorAction SilentlyContinue
& .\tools\localization\prepare_translation_workspace.ps1 `
-BuildRoot $outputRoot `
-OutputDir $workspaceDir `
-ImportArchives `
-Force
New-Item -ItemType Directory -Path $workspaceToolsDir,$workspaceDocDir -Force | Out-Null
Copy-Item -Path .\tools\localization\*.ps1 -Destination $workspaceToolsDir -Force
Copy-Item -Path .\doc\LOCALIZATION.md -Destination $workspaceDocDir -Force
$workspaceZip = "Sally-$version-translator-workspace.zip"
Compress-Archive -Path "$workspaceDir\*" -DestinationPath $workspaceZip
Write-Host "Created translator workspace package: $workspaceZip"
- name: Upload translator workspace failure artifact
if: failure() && matrix.arch == 'x64'
uses: actions/upload-artifact@v4
with:
name: Sally-translator-workspace-failure
path: ${{ runner.temp }}/sally-translator-workspace/
if-no-files-found: ignore
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Sally-${{ matrix.arch }}
path: |
Sally-${{ github.ref_name }}-${{ matrix.arch }}.zip
pdb-${{ matrix.arch }}/
- name: Upload translator workspace artifact
if: matrix.arch == 'x64'
uses: actions/upload-artifact@v4
with:
name: Sally-translator-workspace
path: Sally-${{ github.ref_name }}-translator-workspace.zip
release:
name: Create Release
needs: build
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: List artifacts
run: find artifacts -type f -name "*.zip"
- name: Create consolidated symbols zip
run: |
version="${{ github.ref_name }}"
symbols_root="artifacts/symbols"
rm -rf "$symbols_root"
mkdir -p "$symbols_root"
for arch in x64 x86 ARM64; do
src="$(find artifacts -type d -name "pdb-$arch" | head -n 1)"
if [ -n "$src" ]; then
mkdir -p "$symbols_root/$arch"
cp -a "$src"/. "$symbols_root/$arch"/
else
echo "No symbol directory found for $arch"
fi
done
if find "$symbols_root" -type f -name "*.pdb" | grep -q .; then
(cd "$symbols_root" && zip -r "../Sally-${version}-pdb.zip" .)
echo "Created artifacts/Sally-${version}-pdb.zip"
else
echo "No PDB files found across artifacts; skipping consolidated symbols zip."
fi
- name: List packaged zips
run: find artifacts -type f -name "*.zip"
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: artifacts/**/*.zip
generate_release_notes: true
draft: false
prerelease: false