build: migrate developer tasks to mise - #211
Conversation
2dae1b6 to
e7b17d2
Compare
e7b17d2 to
f1e7c30
Compare
6251891 to
bb7e5c8
Compare
8f8ca82 to
8a8eeb4
Compare
c32e672 to
42ba54c
Compare
Greptile SummaryThe PR replaces duplicated Make and CI developer commands with a versioned Mise task graph. The follow-up changes successfully keep benchmark workflow setup on the workflow revision while checking the selected benchmark ref into an isolated target directory.
Confidence Score: 5/5The PR appears safe to merge because the previously reported benchmark checkout and local-action resolution failures no longer remain. No blocking failure remains. Important Files Changed
|
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
ee83d41 to
9844192
Compare
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
|
|
||
| - name: Set up Python | ||
| uses: actions/setup-python@v6 | ||
| - uses: ./.github/actions/setup-python-env |
There was a problem hiding this comment.
Could we keep the workflow revision checked out while this local action runs, then check out release-ref into a separate directory like benchmark-ci.yml does? Right now the action comes from release-ref, so older tags use the old setup action: checkout: "false" is ignored, the workspace switches back to github.ref, and Mise never gets installed. Historical releases therefore fail at the build step, and the docs job has the same issue.
There was a problem hiding this comment.
Addressed in stacked follow-up #249. Instead of adding a second release checkout, it follows Safe Synthesizer’s tag-push strategy: pushed v* tags run the full production release from the triggering revision, while workflow_dispatch remains available with dry-run and create-gh-release controls but no release-ref input. Every job uses its ordinary checkout ref, so workflow orchestration, setup, build, and docs stay on one revision. The focused workflow suite passes (21 tests), the full local gate passes (1,212 tests), and the strict docs build passes. I am leaving this thread open until the stacked follow-up lands.
andreatnvidia
left a comment
There was a problem hiding this comment.
The Mise direction looks good. I found three blockers around historical releases, the signed bootstrap, and macOS benchmark execution. There’s also one non-blocking argument-forwarding bug in the same benchmark task.
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Why
Developer commands and CI duplicated task definitions across the Makefile and workflow files, which allowed local and CI behavior to drift. Mise provides one versioned task graph and pins the tools that execute it.
No linked issue required: maintainer-owned developer infrastructure migration.
Summary
uv runtasks prepare their own profilesmainuv.lockfor dependency profiles and project-backed task executionsetup allfor every locked dependency group andtest:allfor unit plus opt-in E2E suitesCommand tree
mise run setup [runtime|dev|docs|notebooks|all]mise run deps:sync [runtime|dev|docs|notebooks|all]mise run hooks:installmise run checkandmise run check:*mise run check ::: testmise run test,mise run test:all,mise run test:coverage,mise run test:e2emise run docs:build,mise run docs:servemise run notebooks:executemise run build:wheelmise run lock:updateTask names follow
<domain>[:<action>[:<qualifier>...]]. Arguments select profiles or values. Commands containingcheckpreserve tracked files. Mutating tasks state their outputs inmise tasks.The default local gate stays explicit because it runs only static checks and unit tests; affected specialized suites remain separate. No
validatetask or removed Make compatibility alias is restored.Task and environment boundaries
uv run --locked --group <profile>makes leaf tasks independently runnable and synchronizes the requested locked profile.deps:syncremains the explicit command for preparing a profile without running another task.dependsmodels prerequisites such asclean:pycache; structured task references model ordered stages such as build then publish.setupremains the shared local and CI entry point. CI uses--no-hooksto skip repository hook installation.Base and compatibility
mainat46bcd1edata-designer>=0.9,<0.10and ty 0.0.69 frommain; no dependency downgrades were introduced while regeneratinguv.lockmake help,make install-mise, andmake setupmake setupas the bootstrap path for machines without MiseMigration audits
E9,RUF100,UP015,UP017,UP035, andUP037; apply safe fixes; format and lint tracked Python files and rendered notebooks. The incidental library and tooling formatting edits are mechanical Ruff migrations with no intended behavior change.docspath discovers all rendered notebooks.lock:updateoperation.Security
GitHub Actions requires a GPG-verified Mise installer and fails closed if verification cannot complete. The installer fetches the pinned release key through HTTPS, verifies its fingerprint, downloads the signed installer from the exact pinned Mise release, and avoids dirmngr keyserver hangs. Local installation retains its documented unsigned fallback for slim development environments, but downloads the script completely to a temporary file before execution so curl retries cannot concatenate partial responses.
The PyPI task validates credentials before building, requires an explicit version, keeps credentials out of process arguments, and supports an upload-free
--dry-run.Validation
mise tasks validate: all 25 tasks passedmise run deps:sync all: every locked dependency group synchronized successfullymise run --dry-run test:all: resolved to the unit suite followed by the opt-in E2E suitemise run check ::: test: 1,211 tests passed; Ruff, ty, lock, formatting, SPDX, and benchmark shell checks passedmise run docs:build: strict documentation build passedmise exec -- uv run --locked --group dev pytest tests/tools/test_mise_configuration.py -q: 20 focused workflow/tooling regression tests passedbash tests/tools/test_benchmark_task.sh: benchmark profiles and quoted forwarding passed on Bash 5.2docker run ... bash:3.2 bash tests/tools/test_benchmark_task.sh: the same shell regression suite passed on Bash 3.2.57bash -n tools/install-mise.sh: signed-installer script syntax passed