Repository navigation
ci(docker): publish images that can actually use the Qdrant backend - #1556
Merged
Merged
Conversation
qdrant-client is an optional extra (packages/server/pyproject.toml:67). MemMachine#1532 gave the Dockerfile an EXTRAS build arg so a build can include it, but the publish workflow never passed one, so every image on Docker Hub lacks the package: the core starts cleanly and then raises ModuleNotFoundError on the first request that uses the event backend. The platform chart can now select that backend, so there is no tag it can point at. Both the CPU and GPU builds pass EXTRAS=--extra qdrant unconditionally. The GPU sync line becomes `--extra gpu --extra qdrant`. Verified: uv.lock already carries qdrant-client under `marker = "extra == 'qdrant'"`, so `uv sync --frozen --extra qdrant` resolves without relocking. Parsed the workflow with PyYAML and confirmed build-args is exactly ['GPU=...', 'SCM_VERSION=...', 'EXTRAS=--extra qdrant'] for both jobs -- the rationale sits in a YAML comment above the key, not inside the block scalar, where it would have reached Docker as a literal build arg. Not verified: no image was published from this branch. The workflow is tag-triggered and was not dispatched, so the built image has not been run against a Qdrant deployment. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Nr9kacmpFVTTfkZRw6esxP
edwinyyyu
approved these changes
Aug 31, 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.
What
Both the CPU and GPU publish jobs now pass
EXTRAS=--extra qdrantto the Docker build.Why
qdrant-clientis an optional extra (packages/server/pyproject.toml:67). #1532 gave the Dockerfile anEXTRASbuild arg so a build can include it, butdocker-image.ymlnever passed one — so a published image does not contain the package. The core starts cleanly and then raisesModuleNotFoundErroron the first request that uses the event backend, which makes the Qdrant vector store unusable from a published image regardless of configuration.Unconditional rather than a dispatch input, so a published image can serve either backend and no one has to remember a flag at build time.
Verified
uv.lockalready carriesqdrant-clientundermarker = "extra == 'qdrant'", souv sync --frozen --extra qdrantresolves without relocking — otherwise--frozenwould fail the build.build-argsis exactly['GPU=…', 'SCM_VERSION=…', 'EXTRAS=--extra qdrant']for both jobs. The rationale is a YAML comment above the key, not inside the|block scalar, where it would have reached Docker as a literal build arg.--extra gpu --extra qdrant.Not verified
No image was built or published from this branch. The workflow is tag-triggered and was not dispatched, so the resulting image has not been run against a Qdrant deployment.
Also note: a
workflow_dispatchrun passesinputs.tagtometadata-action'ssemverpatterns, so the input needs to be a parseable version — a bare branch name yields no tags and pushes nothing. Unchanged by this PR, but relevant to anyone dispatching it.