Skip to content

Pin schematron-worker tag in compose, publish ddi-emitter image (#8, #9) - #15

Merged
jstet merged 1 commit into
mainfrom
issue-8-9-deploy-pin
Sep 25, 2026
Merged

jstet merged 1 commit into
mainfrom
issue-8-9-deploy-pin

Conversation

@jstet

@jstet jstet commented Sep 25, 2026 •

Copy link
Copy Markdown
Member

Closes #8, closes #9.

Summary

  • docker compose up pulls nonexistent schematron-worker:local tag; version pin not wired #8: docker-compose.yml pulled schematron-worker:${REGISTRY_VERSION:-local}. Nothing sets REGISTRY_VERSION, and the :local tag doesn't exist on GHCR, so a plain docker compose up failed. The tag is now pinned (v0.1.7). The new scripts/check-registry-version.sh fails if compose, ddi-emitter/package.json or package-lock.json disagree with .registry-version. The release workflow runs it before building.
  • Release workflow doesn't publish ddi-emitter image; published qwacback image can't convert #9: qwacback depends on the ddi-emitter sidecar, but only the qwacback image was published. The release workflow now also publishes ghcr.io/correlaid/qwacback-ddi-emitter with the same tags. The README says to deploy it alongside qwacback and set DDI_EMITTER_URL.
  • The ddi-emitter image now installs with npm ci from the lockfile.
  • Removed ddi-emitter/.npmrc: allow-remote=tarball isn't a valid npm setting, so npm ignored it.

Verification

  • scripts/check-registry-version.sh passes. Changing the compose tag to v0.1.6 makes it fail, as it should.
  • docker compose config and the workflow YAML parse.
  • The ddi-emitter image builds with npm ci and answers /healthz.
  • Not run yet: the image publish itself, which only happens on push to main.

Merges cleanly with #16 (sidecar hardening).

🤖 Generated with Claude Code

docker-compose.yml tagged the worker with ${REGISTRY_VERSION:-local}.
Nothing sets REGISTRY_VERSION, so `docker compose up` pulled
ghcr.io/correlaid/schematron-worker:local, which doesn't exist. Pin the
tag literally and add scripts/check-registry-version.sh, which fails if
compose, ddi-emitter/package.json or package-lock.json disagree with
.registry-version. The release workflow runs it before building.

The published qwacback image depends on the ddi-emitter sidecar, but no
sidecar image was published. The release workflow now also builds and
pushes ghcr.io/correlaid/qwacback-ddi-emitter with the same tags.

Also:
- ddi-emitter image installs with `npm ci` from the lockfile, not
  `npm install` from package.json alone.
- Drop ddi-emitter/.npmrc: `allow-remote=tarball` isn't a valid npm
  setting and was ignored.
- Drop the meaningless local image tag on the ddi-emitter compose service.

Closes #8
Closes #9

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

1 participant