@@ -16,12 +16,26 @@ concurrency:
1616 cancel-in-progress : true
1717
1818jobs :
19+ images :
20+ name : Define Base Images
21+ runs-on : ubuntu-latest
22+ outputs :
23+ lint : ghcr.io/nvidia/cutile-python/lint:2026-01-12-aea51b7409cc
24+ docs : ghcr.io/nvidia/cutile-python/docs:2026-01-12-96c265b9029e
25+ build_py310 : ghcr.io/nvidia/cutile-python/build_py_3.10_x86_64:2026-01-12-a3f084500fb0
26+ build_py311 : ghcr.io/nvidia/cutile-python/build_py_3.11_x86_64:2026-01-12-d0a88a59d0fd
27+ build_py312 : ghcr.io/nvidia/cutile-python/build_py_3.12_x86_64:2026-01-12-9cf7e54a5580
28+ build_py313 : ghcr.io/nvidia/cutile-python/build_py_3.13_x86_64:2026-01-12-7f9db97c8ad8
29+ steps :
30+ - run : echo "Defining image tags"
31+
1932 lint :
2033 name : Lint
34+ needs : images
2135 runs-on : ubuntu-latest
2236 timeout-minutes : 10
2337 container :
24- image : ghcr.io/nvidia/cutile-python/ lint:2025-12-06-4cb7d16e4c20
38+ image : ${{ needs.images.outputs. lint }}
2539 steps :
2640 - name : Checkout repository
2741 uses : actions/checkout@v6
@@ -30,10 +44,73 @@ jobs:
3044 run : flake8
3145
3246 - name : Run cpplint
33- run : python3 ci /cpplint.py
47+ run : python scripts /cpplint.py
3448
3549 - name : Check license headers (REUSE)
36- run : ci/ scripts/check_license.sh
50+ run : scripts/check_license.sh
3751
3852 - name : Check inline samples are up to date
39- run : python3 test/tools/inline_samples.py --check
53+ run : python test/tools/inline_samples.py --check
54+
55+ docs :
56+ name : Build Docs
57+ needs : [images, build]
58+ runs-on : ubuntu-latest
59+ timeout-minutes : 10
60+ container :
61+ image : ${{ needs.images.outputs.docs }}
62+ steps :
63+ - name : Checkout repository
64+ uses : actions/checkout@v6
65+
66+ - name : Download wheel
67+ uses : actions/download-artifact@v4
68+ with :
69+ name : wheel-py3.12-linux-x86_64
70+ path : dist/
71+
72+ - name : Install wheel
73+ run : pip install dist/*.whl
74+
75+ - name : Build documentation
76+ run : make -C docs html
77+
78+ - name : Upload docs artifact
79+ uses : actions/upload-artifact@v4
80+ with :
81+ name : docs-html
82+ path : docs/build/html
83+ retention-days : 7
84+
85+ build :
86+ name : Build Wheel (Python ${{ matrix.python-version }})
87+ needs : images
88+ runs-on : ubuntu-latest
89+ timeout-minutes : 30
90+ strategy :
91+ matrix :
92+ include :
93+ - python-version : " 3.10"
94+ image_key : build_py310
95+ - python-version : " 3.11"
96+ image_key : build_py311
97+ - python-version : " 3.12"
98+ image_key : build_py312
99+ - python-version : " 3.13"
100+ image_key : build_py313
101+ container :
102+ image : ${{ needs.images.outputs[matrix.image_key] }}
103+ steps :
104+ - name : Checkout repository
105+ uses : actions/checkout@v6
106+
107+ - name : Build wheel
108+ run : python setup.py bdist_wheel
109+
110+ - name : Upload wheel artifact
111+ uses : actions/upload-artifact@v4
112+ with :
113+ name : wheel-py${{ matrix.python-version }}-linux-x86_64
114+ path : dist/*.whl
115+ if-no-files-found : error
116+ retention-days : 7
0 commit comments