0.8.0 Alpha 4 #20
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Windows Release | |
| on: | |
| release: | |
| types: [published] | |
| permissions: {} | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build-and-upload: | |
| # Runner must be windows/x64 with PowerShell, Docker, and rustup. | |
| runs-on: [self-hosted, windows, x64] | |
| timeout-minutes: 90 | |
| permissions: | |
| contents: write | |
| # Source the tag from the github context (evaluated by Actions) rather than | |
| # $env:GITHUB_REF_NAME, which is only injected by runner >= 2.290. Keeps the | |
| # build working on older self-hosted runners. (#212 follow-up) | |
| env: | |
| REF_NAME: ${{ github.ref_name }} | |
| defaults: | |
| run: | |
| shell: powershell | |
| steps: | |
| - name: clean workspace | |
| run: | | |
| Remove-Item -Recurse -Force .build, dist -ErrorAction SilentlyContinue | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| - name: write version files | |
| run: | | |
| $tag = $env:REF_NAME | |
| if (-not $tag) { throw "REF_NAME is not set" } | |
| $version = $tag -replace '^v', '' | |
| $json = "{`"version`": `"$version`"}" | |
| Set-Content -Path "static/version.json" -Value $json -Encoding UTF8 | |
| (Get-Content "desktop/src-tauri/Cargo.toml") -replace '^version = ".*"', "version = `"$version`"" | | |
| Set-Content "desktop/src-tauri/Cargo.toml" | |
| (Get-Content "desktop/src-tauri/tauri.conf.json") -replace '"version": "[^"]*"', "`"version`": `"$version`"" | | |
| Set-Content "desktop/src-tauri/tauri.conf.json" | |
| (Get-Content "pyproject.toml") -replace '^version = ".*"', "version = `"$version`"" | | |
| Set-Content "pyproject.toml" | |
| (Get-Content "desktop/package.json") -replace '"version": "[^"]*"', "`"version`": `"$version`"" | | |
| Set-Content "desktop/package.json" | |
| Write-Host "Wrote version $version to all version files" | |
| - name: build Windows NVIDIA | |
| run: | | |
| powershell -NoProfile -ExecutionPolicy Bypass -File scripts/windows/make-portable.ps1 ` | |
| -PackageName StemDeck-Windows-x64.NVIDIA ` | |
| -PackageVersion "$env:REF_NAME" ` | |
| -StripVenv | |
| - name: build Windows CPU | |
| run: | | |
| powershell -NoProfile -ExecutionPolicy Bypass -File scripts/windows/make-portable.ps1 ` | |
| -PackageName StemDeck-Windows-x64 ` | |
| -PackageVersion "$env:REF_NAME" ` | |
| -CpuOnly ` | |
| -StripVenv | |
| - name: scan artifacts | |
| run: | | |
| Write-Host "Preparing ClamAV scan for Windows release artifacts..." | |
| Write-Host "Artifacts staged in: $PWD\dist" | |
| Get-ChildItem -Path "dist" -File | | |
| Sort-Object Name | | |
| Select-Object Name, | |
| @{Name="SizeMB"; Expression={ [math]::Round($_.Length / 1MB, 2) }} | | |
| Format-Table -AutoSize | |
| Write-Host "SHA256 checksums:" | |
| Get-ChildItem -Path "dist" -Filter "*.zip" -File | | |
| Sort-Object Name | | |
| ForEach-Object { | |
| $hash = Get-FileHash -Algorithm SHA256 $_.FullName | |
| Write-Host " $($hash.Hash) $($_.Name)" | |
| } | |
| Write-Host "Pulling latest ClamAV scanner image..." | |
| docker pull clamav/clamav:latest | |
| Write-Host "Running ClamAV scan over dist/..." | |
| docker run --rm -v "${PWD}/dist:/scan:ro" clamav/clamav:latest ` | |
| clamscan --recursive --infected --bell /scan | |
| if ($LASTEXITCODE -ne 0) { | |
| throw "ClamAV scan failed or reported infected files. Exit code: $LASTEXITCODE" | |
| } | |
| Write-Host "ClamAV scan completed successfully. No infected files reported." | |
| - name: upload artifacts | |
| uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1 | |
| with: | |
| files: | | |
| dist/StemDeck-Windows-x64.NVIDIA.zip | |
| dist/StemDeck-Windows-x64.NVIDIA.zip.sha256 | |
| dist/StemDeck-Windows-x64.zip | |
| dist/StemDeck-Windows-x64.zip.sha256 | |
| append_body: true | |
| body: | | |
| ### Artifact scan | |
| - Windows portable packages were scanned with ClamAV in CI before upload. |