Repository navigation
ci: small matrix on pull requests, full matrix on main, nightly and releases - #45
Merged
Merged
Conversation
…d releases The organisation shares one runner cap with ArcadeData/arcadedb, so every extra macOS or Windows leg on a pull request delays upstream too. scripts/select_matrix.py picks the legs from the event name. A pull request runs linux/amd64 on Python 3.10-3.14 and the other three platforms on 3.10 and 3.14 (bindings, 11 legs), and all four platforms on 3.14 (examples, 4 legs). Every other event, including the release workflow's workflow_call, runs all 20 legs of each workflow as before. The first job of each workflow runs the script and the test job takes its matrix from that job's output, so the job names stay "Test arcadedb (<platform>, Python <version>)". A pull request now runs 21 checks instead of 46. tests/test_select_matrix.py pins the full matrix at 20 legs and checks the Python list against the pyproject classifiers. New docs page development/ci.adoc. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…matrix tomllib is not in Python 3.10, so the file failed to collect on every 3.10 leg (linux/amd64, linux/arm64, windows/amd64). A regex over the classifier lines does the same check. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
8 of 10 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A pull request now runs a small test matrix. Push to
main, the nightly schedule, a manual dispatch and the release workflow run the full matrix exactly as before.ArcadeData's org shares one runner cap with upstream ArcadeDB, so every macOS or Windows leg a pull request starts can delay upstream jobs. This builds on #38 (docs-only and draft PRs skip, superseded PR runs cancel); all of that stays.
Which legs run
Test arcadedb)Test Python Examples)pull_requestlinux/amd64x 3.10-3.14, andlinux/arm64,darwin/arm64,windows/amd64x 3.10 and 3.14 = 11 legspushto main,schedule,workflow_dispatch,workflow_callfromrelease.ymlThe examples keep all four platforms on pull requests because they have platform-specific code:
os.name == "nt"branches in examples 07 to 12, and per-platform workflow steps (CPU torch index on macOS, UTF-8 on Windows).Check counts (counted from the YAML, old versus new, jobs with a matrix counted per leg)
A pull request now runs 21 checks: 11 + 4 test legs, 2 x
Download ArcadeDB JARs, 2 summary jobs,Bandit security scanandDependency floor audit. The test legs go from 40 to 15, and the macOS and Windows legs from 20 to 6. A merge waiter should require at least 21 checks on a non-draft PR that touches more than docs; a docs-only or draft PR runs fewer, as before.How
scripts/select_matrix.pyholds the platform and Python lists and the pull request selection, and prints thestrategy.matrixJSON for the event. Any event other thanpull_request(including one it does not know) gets the full matrix.Download ArcadeDB JARs, runs it in a new first step and exposes the result as a job output. The test job usesmatrix: ${{ fromJSON(needs.download-jars.outputs.matrix) }}. No extra job, so no extra runner, and the existing job names are unchanged.platform,runs-onandpython-version, so the check names stayTest arcadedb (<platform>, Python <version>)andTest Python Examples (<platform>, Python <version>), and their history stays comparable.mainis not branch-protected, so dropping PR legs cannot block a merge.release.ymlcalls both workflows withworkflow_call, wheregithub.event_nameis the caller's event (a tag push), so a release still builds all 20 wheels thatverify-wheelscounts. Only a comment there changed.Tests and lint
tests/test_select_matrix.py(21 cases, written first; the wiring cases failed before the workflow edit): the full matrix is written out independently and must equal 4 x 5 for every non-PR event and an unknown one; the PR matrices are exact and a subset of the full one; the Python list equals thepyproject.tomlclassifiers (release.yml counts wheels from them); both workflows take their matrix from the script and keep no copy of the lists.actionlint1.7.12 (the pre-commit rev) is clean on all three workflows; black, isort and Bandit are clean on the new files.Docs
New page
development/ci.adoc(in the nav) describing what runs when and how to change the selection. The three "CI runs all five versions on every platform" sentences (README,index.adoc,installation.adoc) now say formain, the nightly run and each release, andCLAUDE.md's CI section has the new rule.🤖 Generated with Claude Code