Skip to content

Add GitHub Actions CI, wheel building, and docs workflows#84

Merged
keithlostracco merged 8 commits into
mainfrom
phase-2/github-actions-ci
May 26, 2026
Merged

Add GitHub Actions CI, wheel building, and docs workflows#84
keithlostracco merged 8 commits into
mainfrom
phase-2/github-actions-ci

Conversation

@keithlostracco
Copy link
Copy Markdown
Contributor

@keithlostracco keithlostracco commented May 26, 2026

@

Summary

  • ci.yml: Smoke test on push to main + PRs — builds for Python 3.12 with CUDA/Vulkan, verifies import
  • wheels.yml: cibuildwheel matrix building Python 3.9-3.13 wheels on Windows. Triggered by GitHub Release or manual dispatch. Publishes to PyPI (trusted publishing) and uploads wheels as release assets.
  • docs.yml: Builds Sphinx docs and deploys to docs branch (GitHub Pages). Triggered by release or manual dispatch.
  • Updated docs/source/conf.py to use installed package instead of hardcoded build paths
  • Updated docs/requirements.txt with missing dependencies
  • VMA fetched via FetchContent for CI compatibility (full Vulkan SDK not required)
  • CUDA Toolkit cached between runs via actions/cache
  • Ninja generator used in CI (avoids need for CUDA VS integration)

Depends on #83 (Phase 1).

Test plan

  • ci.yml runs automatically on PR — build + import succeeds
  • Trigger wheels.yml manually from main — verify wheels built for all 5 Python versions
  • Trigger docs.yml manually from main — verify docs build and deploy to docs branch
    @

- ci.yml: build check on push to main and PRs (Python 3.12, CUDA, Vulkan)
- wheels.yml: cibuildwheel matrix for Python 3.9-3.13 on Windows, triggered
  by release or manual dispatch. Publishes to PyPI via trusted publishing
  and uploads wheels to GitHub Release assets.
- docs.yml: builds Sphinx docs and deploys to docs branch (GitHub Pages),
  triggered by release or manual dispatch

Also updates docs config:
- conf.py: version from importlib.metadata, autoapi_dirs from installed package
- Makefile: build output to docs/build (not install/docs)
- requirements.txt: add missing numpydoc, myst_parser deps
The humbletim/setup-vulkan-sdk action depends on deprecated actions/cache@v2
which is no longer supported by GitHub Actions.
Add ninja to build-system requires so scikit-build-core uses Ninja instead
of the Visual Studio generator. Ninja only needs nvcc on PATH (which we set
up), while VS generator requires the CUDA VS integration plugin.

Add ilammy/msvc-dev-cmd step to put cl.exe on PATH for Ninja.
- VMA repo has header at include/vk_mem_alloc.h but source expects
  vma/vk_mem_alloc.h (Vulkan SDK layout). Copy header into expected
  directory structure at configure time.
- Cache CUDA Toolkit install between CI runs to avoid 2+ min download
  on every build.
@keithlostracco keithlostracco merged commit a3c4fb2 into main May 26, 2026
1 check passed
@keithlostracco keithlostracco deleted the phase-2/github-actions-ci branch May 26, 2026 05:35
keithlostracco added a commit that referenced this pull request May 27, 2026
* Add GitHub Actions CI, wheel building, and docs workflows

- ci.yml: build check on push to main and PRs (Python 3.12, CUDA, Vulkan)
- wheels.yml: cibuildwheel matrix for Python 3.9-3.13 on Windows, triggered
  by release or manual dispatch. Publishes to PyPI via trusted publishing
  and uploads wheels to GitHub Release assets.
- docs.yml: builds Sphinx docs and deploys to docs branch (GitHub Pages),
  triggered by release or manual dispatch

Also updates docs config:
- conf.py: version from importlib.metadata, autoapi_dirs from installed package
- Makefile: build output to docs/build (not install/docs)
- requirements.txt: add missing numpydoc, myst_parser deps

* Switch Vulkan SDK action to jakoch/install-vulkan-sdk-action

The humbletim/setup-vulkan-sdk action depends on deprecated actions/cache@v2
which is no longer supported by GitHub Actions.

* Disable caching on CUDA toolkit action to avoid cache path validation error

* Replace CUDA toolkit action with direct NVIDIA installer

* Use Ninja generator in CI to avoid CUDA VS integration requirement

Add ninja to build-system requires so scikit-build-core uses Ninja instead
of the Visual Studio generator. Ninja only needs nvcc on PATH (which we set
up), while VS generator requires the CUDA VS integration plugin.

Add ilammy/msvc-dev-cmd step to put cl.exe on PATH for Ninja.

* Force Ninja generator in CI via CMAKE_GENERATOR env var

* Fetch VMA (Vulkan Memory Allocator) via FetchContent for CI compatibility

* Fix VMA include path and add CUDA caching

- VMA repo has header at include/vk_mem_alloc.h but source expects
  vma/vk_mem_alloc.h (Vulkan SDK layout). Copy header into expected
  directory structure at configure time.
- Cache CUDA Toolkit install between CI runs to avoid 2+ min download
  on every build.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant