Repository navigation
feat(#3): arcadedb-tag input to pin the ArcadeDB image in CI - #10
Merged
Merged
Conversation
Both workflows take arcadedb-tag (workflow_dispatch and workflow_call, default latest). download-jars pulls arcadedata/arcadedb:<tag> and fails fast when a pinned tag does not hold that exact engine version, since the build jobs pull their base image by the jar version. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 23, 2026
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.
Closes #3
Both CI workflows (
test-python-bindings.yml,test-python-examples.yml) take a newarcadedb-taginput, onworkflow_dispatchand onworkflow_call, defaulting tolatest. A top-levelARCADEDB_IMAGE_TAG: ${{ inputs.arcadedb-tag || 'latest' }}feedsdownload-jars, which now pullsarcadedata/arcadedb:<tag>instead of a hard-codedlatest. Push, pull_request and schedule runs pass no input, so they still build fromlatest.The build jobs take their Docker base image by the engine version read from the jars, not by the requested tag. A pinned tag therefore has to be an exact version tag, and
download-jarsnow fails fast with a clear message if it isn't. The README's Development section documents the input.Test plan
main,gh workflow run test-python-bindings.yml -f arcadedb-tag=26.10.1was refused withHTTP 422: Unexpected inputs provided: ["arcadedb-tag"].test-python-bindings.ymlon this branch witharcadedb-tag=26.10.2.download-jarsloggedDownloading JARs from arcadedata/arcadedb:26.10.2, bundledarcadedb-engine-26.10.2.jarand resolvedArcadeDB version: 26.10.2, and every job passed: https://github.com/ArcadeData/arcadedb-python-bindings/actions/runs/39868652872test-python-examples.yml, which also resolved26.10.2, and every job passed: https://github.com/ArcadeData/arcadedb-python-bindings/actions/runs/39868662966pull_requestruns still build fromlatest(26.11.1-SNAPSHOT).actionlintand pre-commit pass on both workflows.Coverage
Invariant: in CI, the jars bundled in every wheel come from
arcadedata/arcadedb:<arcadedb-tag>, and fromlatestwhen no tag is given.The writers and readers of the image tag, found with
grep -rnE 'arcadedata/arcadedb[:"$ ]|arcadedb:latest|ARCADEDB_TAG' .github scripts:docker create arcadedata/arcadedb:latestcalls, one in each workflow'sdownload-jars. Both now useARCADEDB_IMAGE_TAG.needs.download-jars.outputs.arcadedb-tag):build.shuses it asDOCKER_TAG.Dockerfile.builduses it inFROM arcadedata/arcadedb:${ARCADEDB_TAG}.build-native.shpulls it withdocker runonly when there are no jars, and CI always passes the artifact jars.workflow_dispatchworkflow_dispatchworkflow_callinputs.arcadedb-tagexpression as dispatch, and no caller exists yet (no release workflow)latestKnown gaps: None. The tag-mismatch guard is not exercised by a real run, because no published tag holds a jar version different from its own name. It is two string comparisons, linted by actionlint.
Adversarial pass
I ran one independent review of the patch. Its findings and what I did:
download-jars; the build jobs pullarcadedata/arcadedb:<jar version>. Real: an alias tag would build against a different base image than requested. Fixed here:download-jarsnow fails when a pinned tag doesn't name the jar version exactly. I kept passing the jar version on, becausebuild.shchecks the jars against it.workflow_callis untested. Real but argued: there is no caller in the repo yet, and it reads the same expression as dispatch.default: "latest") and call (none). Fixed here: both declaredefault: "latest".Review cycles
This repository has no Claude review workflow (
.github/workflowsholds only the two test workflows), so no bot review was waited for. Final state:no-reviewer.🤖 Generated with Claude Code