@@ -16,12 +16,43 @@ concurrency:
1616 cancel-in-progress : true
1717
1818jobs :
19+ load-image-tags :
20+ name : Load Image Tags
21+ runs-on : ubuntu-latest
22+ outputs :
23+ lint : ${{ steps.tags.outputs.lint }}
24+ build-matrix : ${{ steps.tags.outputs.build-matrix }}
25+ steps :
26+ - name : Checkout repository
27+ uses : actions/checkout@v6
28+
29+ - name : Read image tags
30+ id : tags
31+ run : |
32+ echo "lint=$(tail -1 .github/tags/lint.tag)" >> $GITHUB_OUTPUT
33+
34+ # Build matrix from tag files
35+ matrix='['
36+ first=true
37+ for version in 3.10 3.11 3.12 3.13; do
38+ tag=$(tail -1 .github/tags/build_py_${version}_x86_64.tag)
39+ if [ "$first" = true ]; then
40+ first=false
41+ else
42+ matrix+=','
43+ fi
44+ matrix+="{\"python-version\":\"${version}\",\"image\":\"${tag}\"}"
45+ done
46+ matrix+=']'
47+ echo "build-matrix=${matrix}" >> $GITHUB_OUTPUT
48+
1949 lint :
2050 name : Lint
51+ needs : load-image-tags
2152 runs-on : ubuntu-latest
2253 timeout-minutes : 10
2354 container :
24- image : ghcr.io/nvidia/cutile-python/lint:2025-12-11-ca8b32e31766
55+ image : ${{ needs.load-image-tags.outputs.lint }}
2556 steps :
2657 - name : Checkout repository
2758 uses : actions/checkout@v6
3768
3869 - name : Check inline samples are up to date
3970 run : python3 test/tools/inline_samples.py --check
71+
72+ build :
73+ name : Build Wheel (Python ${{ matrix.python-version }})
74+ needs : load-image-tags
75+ runs-on : ubuntu-latest
76+ timeout-minutes : 30
77+ strategy :
78+ matrix :
79+ include : ${{ fromJson(needs.load-image-tags.outputs.build-matrix) }}
80+ container :
81+ image : ${{ matrix.image }}
82+ steps :
83+ - name : Checkout repository
84+ uses : actions/checkout@v6
85+
86+ - name : Build wheel
87+ run : python setup.py bdist_wheel
88+
89+ - name : Upload wheel artifact
90+ uses : actions/upload-artifact@v4
91+ with :
92+ name : wheel-py${{ matrix.python-version }}-linux-x86_64
93+ path : dist/*.whl
94+ if-no-files-found : error
95+ retention-days : 7
0 commit comments