Skip to content

vinca-gha --json: write the batched stages instead of a workflow - #201

Draft
EzraBrooks wants to merge 3 commits into
RoboStack:masterfrom
EzraBrooks:pr-stages-json
Draft

EzraBrooks wants to merge 3 commits into
RoboStack:masterfrom
EzraBrooks:pr-stages-json

Conversation

@EzraBrooks

@EzraBrooks EzraBrooks commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Adds vinca-gha --json <file>: instead of a GitHub Actions workflow, it writes the recipes' dependency graph as CI jobs, independent of any CI system:

{"stages": [[{"id": "stage_0_job_0", "name": "<job name>", "recipes": "<space-separated recipes>", "needs": [], "requires": {"<recipe>": ["<recipe>", ...]}}, ...], ...]}
  • One list of jobs per stage, with the same staging and batching (--batch_size, --timings) as the generated workflows. Ids match the workflow's job names (stage_<k>_job_<i>).
  • needs: the earlier jobs that build the job's recipes' direct requirements (host, run and test). Jobs for packages that aren't being built are left out.
  • requires: for each of the job's recipes, the same requirements as recipes, limited to the ones being built. A CI can let a failed recipe hold back only the recipes that need it, not the whole job's dependents.
  • There's no workflow file, so the workflow-size budget loop is skipped.

This treats vinca-gha as a converter from the recipe graph to a CI job graph; the workflow writers (and vinca-gitlab) could render from the same structure.

The first user is RoboStack's staged build for pull requests and releases (RoboStack/robostack#216). It runs the jobs through fixed matrix stage slots, with no committed workflow files, and uses needs to download only the packages a job requires, and requires to skip only the recipes whose requirements failed. That PR pins this change cherry-picked onto the current pin (74d1e85): EzraBrooks/vinca@3fa01ee.

Tests: test_json_writes_the_stages_instead_of_a_workflow (stages, ids, direct needs, requires), test_json_without_recipes_has_no_stages.

For workflows that build the stages through a matrix per stage (e.g. RoboStack's pull-request builds) instead of a generated workflow file.
Tobias-Fischer added a commit to Tobias-Fischer/vinca-rs that referenced this pull request Nov 13, 2026
…ates, pixi package

- vinca-rs snapshot: rosdistro_snapshot.yaml (same output as vinca-snapshot)
- vinca-rs requirements: every selected package's requirements as JSON
- workflow --json: the jobs as RoboStack/vinca#201's stages, with needs
- build_catkin -> build_cmake without catkin/ROS 1 leftovers; skip_testing dropped
- package_xml_name for additional recipes
- pixi.toml: pixi-build-rust package and development tasks
- pixi-build-ros from the upstream PR branch (prefix-dev/pixi#7526)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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