Skip to content

Rename to Preppy; migrate CI to GitHub Actions + GHCR Docker builds - #1

Merged
csparker247 merged 4 commits into
developfrom
feat/github-migration_20260723
Jul 23, 2026
Merged

Rename to Preppy; migrate CI to GitHub Actions + GHCR Docker builds#1
csparker247 merged 4 commits into
developfrom
feat/github-migration_20260723

Conversation

@csparker247

Copy link
Copy Markdown
Member

Transition from GitLab (origin) to GitHub (github).

Rename → Preppy

  • Package/project dri-voyager-preppypreppy (setup.cfg name + URL → GitHub).
  • Console scripts renamed: voyager-preppypreppy, voyager-obj2glbpreppy-obj2glb, voyager-merge-itemspreppy-merge-items, voyager-check-toolspreppy-check-tools. All live references updated (README, CLAUDE.md, schema $id/description, Python docstrings, tests, Node helper package.json).
  • singularity/dri-voyager-preppy.defsingularity/preppy.def with updated in-file install paths (local working dir left as-is).

CI → GitHub Actions

  • .github/workflows/ci.yml: pytest across Python 3.11–3.13 + preppy -h smoke test, plus a workflow_dispatch-gated, non-blocking integration job (the GitLab manual/allow_failure equivalent).
  • Removed .gitlab-ci.yml.

Docker → GHCR

  • Dockerfile derived from the singularity def (ImageMagick, KTX-Software, gltfpack, Node 24, editable install with the preview extra). Arch-aware KTX .deb via TARGETARCH for multi-arch. Added .dockerignore.
  • .github/workflows/build_docker.yml: multi-arch (linux/amd64,linux/arm64) buildx build pushed to ghcr.io/educelab/preppy (edge on develop; semver + latest on v* tags), with registry buildcache.

Notes

  • KTX version (pre-existing): the def pins KTX_VERSION=5.0.0, but no final v5.0.0 tag exists yet (only v5.0.0-rc1), so that URL 404s. The pipeline uses ktx create (present since v4.1), so the Dockerfile pins stable v4.4.2 via ARG KTX_VERSION, bumpable when v5 ships. The def's pin was left untouched (out of scope for this PR).
  • Historical docs (docs/adr/*, docs/implementation-plan.md, conductor/) intentionally retain the old name as point-in-time records.

Verification

  • 119 tests pass locally; all four renamed console scripts resolve; both workflow YAMLs parse. Dockerfile not build-checked locally (no Docker daemon) — the workflow exercises it on push.

🤖 Generated with Claude Code

csparker247 and others added 4 commits July 23, 2026 10:51
Transition from GitLab (origin) to GitHub (github).

Rename:
- Package/project dri-voyager-preppy -> preppy (setup.cfg name + URL).
- Console scripts voyager-* -> preppy / preppy-obj2glb / preppy-merge-items /
  preppy-check-tools. Updated all live references (README, CLAUDE.md, schema
  $id/description, docstrings, tests, Node helper package name).
- singularity/dri-voyager-preppy.def -> singularity/preppy.def with updated
  in-file install paths.

CI:
- Add .github/workflows/ci.yml (pytest across py3.11-3.13 + `preppy -h` smoke
  test, plus a workflow_dispatch-gated, non-blocking integration job).
- Remove .gitlab-ci.yml.

Docker:
- Add Dockerfile derived from the singularity def (ImageMagick, KTX-Software,
  gltfpack, Node, editable install with the preview extra). Arch-aware KTX .deb
  via TARGETARCH for multi-arch; pinned to stable v4.4.2 (no final v5.0.0 tag
  exists yet). Add .dockerignore.
- Add .github/workflows/build_docker.yml: multi-arch (amd64/arm64) buildx build
  pushed to ghcr.io/educelab/preppy (edge on develop; semver + latest on tags).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two _render_thumbnail tests (texture-crop fallback + texture mode) and the two
render_preview tests shell out to `magick` to build/crop fixtures, but lacked
the availability guard their sibling had. On a bare runner (GitHub Actions unit
matrix installs neither ImageMagick nor the preview extra) they failed with
FileNotFoundError instead of skipping, breaking the documented "bare run covers
pure logic, tool tests skip cleanly" contract. The full texture path is still
exercised by the manual `integration` job, which installs ImageMagick.

Add a shared `_magick_available()` helper + `requires_magick` skip marker and
apply it to the four magick-dependent tests (folding in the one inline probe).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The tool-availability skips exist so a bare local-dev machine can still run the
pure-logic suite, but CI should actually exercise those paths to catch
regressions (as the missing magick guard showed). Install ImageMagick, the
`preview` extra (trimesh/pyrender), and OSMesa (PYOPENGL_PLATFORM=osmesa) in the
py matrix job so the texture-normalization and rendered-thumbnail tests run
rather than skip. The heavier geometry toolchain (ktx/gltfpack/node) and
pymeshlab stay in the manual `integration` job.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Release covering the GitHub migration: rename to Preppy, GitHub Actions CI, and
the multi-arch GHCR Docker build. Keep the Node embed helper (preppy-node)
version synced with the Python package.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@csparker247
csparker247 merged commit 5f1d6a1 into develop Jul 23, 2026
4 checks passed
@csparker247
csparker247 deleted the feat/github-migration_20260723 branch July 23, 2026 18:19
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