1414 workflow_dispatch :
1515
1616jobs :
17- build-linux :
18- runs-on : ubuntu-latest
17+ build :
18+ name : Build (${{ matrix.target }})
19+ runs-on : ${{ matrix.os }}
20+ strategy :
21+ fail-fast : false
22+ matrix :
23+ include :
24+ # Linux AMD64
25+ - os : ubuntu-latest
26+ target : linux-amd64
27+ build_cmd : nuitka-linux
28+ # Linux ARM64
29+ - os : ubuntu-latest-arm
30+ target : linux-arm64
31+ build_cmd : nuitka-linux
32+ # Windows AMD64
33+ - os : windows-latest
34+ target : windows-amd64
35+ build_cmd : nuitka-windows
36+ # Windows ARM64
37+ - os : windows-11-arm
38+ target : windows-arm64
39+ build_cmd : nuitka-windows
40+
1941 defaults :
2042 run :
2143 working-directory : ./src/cli
@@ -25,68 +47,33 @@ jobs:
2547 uses : actions/checkout@v6
2648
2749 - name : Install uv
28- uses : astral-sh/setup-uv@v7
50+ uses : astral-sh/setup-uv@v5
2951
3052 - name : Install deps with uv
3153 run : uv sync --frozen
3254
33- - name : Build
34- run : uv run poe nuitka-linux
55+ - name : Build Binary
56+ run : uv run poe ${{ matrix.build_cmd }}
3557
3658 - name : Show build outputs
37- run : ls -la
59+ shell : bash # Use bash for consistent listing across OS
60+ run : ls -R .
3861
39- - name : Verify Linux artifact exists
62+ - name : Verify artifact exists
63+ shell : bash
4064 run : |
4165 if ! ls ./app* >/dev/null 2>&1; then
4266 echo "No artifact found"; exit 1
4367 else
4468 echo "Found artifact(s):"; ls ./app*
4569 fi
4670
47- - name : Upload Linux CLI artifact
48- uses : actions/upload-artifact@v7
49- with :
50- name : cli-linux
51- path : ./src/cli/**/app*
52-
53- build-windows :
54- runs-on : windows-latest
55- defaults :
56- run :
57- working-directory : ./src/cli
58-
59- steps :
60- - name : Checkout repository
61- uses : actions/checkout@v6
62-
63- - name : Install uv
64- uses : astral-sh/setup-uv@v7
65-
66- - name : Install deps with uv
67- run : uv sync --frozen
68-
69- - name : Build (Windows) via poe
70- run : uv run poe nuitka-windows
71-
72- - name : Show build outputs
73- run : |
74- Get-ChildItem -Path . -Recurse -File | Select-Object FullName
75- shell : powershell
76-
77- - name : Verify Windows artifact exists
78- run : |
79- $files = Get-ChildItem -Path . -Filter 'app*.exe' -Recurse -File
80- if ($files.Count -eq 0) {
81- Write-Error 'No exe found'
82- exit 1
83- } else {
84- $files | ForEach-Object { Write-Host "Found: $($_.FullName)" }
85- }
86- shell : powershell
87-
88- - name : Upload Windows CLI artifact
89- uses : actions/upload-artifact@v7
71+ - name : Upload CLI artifact
72+ uses : actions/upload-artifact@v4
9073 with :
91- name : cli-windows
92- path : ./src/cli/**/app*.exe
74+ name : cli-${{ matrix.target }}
75+ path : |
76+ src/cli/app
77+ src/cli/app.bin
78+ src/cli/app.exe
79+ if-no-files-found : error
0 commit comments