1- name : Framework-Dependent Release
1+ name : Multi-Platform Release
22
33on :
44 push :
@@ -10,7 +10,18 @@ permissions:
1010
1111jobs :
1212 build :
13- runs-on : windows-latest
13+ strategy :
14+ matrix :
15+ # Define the target platforms
16+ include :
17+ - os : windows-latest
18+ rid : win-x64
19+ suffix : Win64
20+ - os : ubuntu-latest
21+ rid : linux-x64
22+ suffix : Linux-x64
23+
24+ runs-on : ${{ matrix.os }}
1425
1526 steps :
1627 - name : Checkout
@@ -21,27 +32,37 @@ jobs:
2132 with :
2233 dotnet-version : ' 10.0.x'
2334
24- - name : Publish (Win-x64)
25- # --self-contained false: Requires user to have .NET 10 Runtime
26- # PublishSingleFile=false: Keeps files separate, preventing %TEMP% extraction
35+ - name : Publish
36+ # We enable ReadyToRun only on the native OS for that RID
2737 run : >
2838 dotnet publish WarframeMarketTracker.csproj
2939 -c Release
30- -r win-x64
40+ -r ${{ matrix.rid }}
3141 --self-contained false
3242 -p:PublishSingleFile=false
3343 -p:PublishReadyToRun=true
34- -o ./publish
44+ -o ./publish-${{ matrix.rid }}
3545
36- - name : Zip Release Folder
46+ - name : Zip Release Folder (Windows)
47+ if : matrix.os == 'windows-latest'
3748 shell : pwsh
38- run : Compress-Archive -Path ./publish/* -DestinationPath ./WarframeMarketTracker_Win64_Portable.zip
49+ run : Compress-Archive -Path ./publish-${{ matrix.rid }}/* -DestinationPath ./WarframeMarketTracker_${{ matrix.suffix }}.zip
50+
51+ - name : Tar Release Folder (Linux)
52+ if : matrix.os == 'ubuntu-latest'
53+ run : tar -czvf WarframeMarketTracker_${{ matrix.suffix }}.tar.gz -C ./publish-${{ matrix.rid }} .
3954
4055 - name : Create Release
4156 uses : softprops/action-gh-release@v2
4257 with :
43- files : WarframeMarketTracker_Win64_Portable.zip
58+ files : |
59+ WarframeMarketTracker_Win64.zip
60+ WarframeMarketTracker_Linux-x64.tar.gz
4461 name : Version ${{ github.ref_name }}
45- body : " Windows 11+ (Requires .NET 10 Runtime)"
62+ body : |
63+ Multi-platform build for Version ${{ github.ref_name }}
64+ Requires .NET 10 Runtime installed on the host system.
65+ # This 'append_body' ensures parallel jobs don't overwrite each other
66+ append_body : true
4667 env :
47- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
68+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments