Prereleases for the dev server, and the hosts run the published images (#1043) #1044
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/1043-prereleases-and-image-deploys"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #1043. Closes #1042.
Summary
The repo side of the owner's 2026-10-03 decisions: cut prereleases for testing on dev, and run the published images on both hosts instead of building from source. It also fills in every remaining
TODO(ask)in the project profile. No host is changed by this PR; the cutovers come after it, each with the owner's go-ahead.docker-compose.images.yml(new). Pinsmigrate,backend,worker,beat,frontendandbottogit.rhoving.com/rbrooks/quest-board-<c>:<version>, withbuild: !reset nullso an image host cannot build from source. A host turns it on withCOMPOSE_FILE=docker-compose.yml:docker-compose.images.ymlin.envand updates by checking out a release tag. The file says 4.4.1 today, matchingAPP_VERSION.check_version_sync.py. The six image tags must equalAPP_VERSION, so a release commit that forgets the overlay fails CI.changelog.py render. Prints the pending fragments exactly asassemblewould insert them (it reuses_assemble_text), writing nothing.release.yml. A tag containing-gets notes fromrenderunder a "Prerelease of X.Y.Z for testing on the dev server; not for production." line, instead of "No changelog entry found". Finals are unchanged.docs/OPERATIONS.md. New "Cutting a prerelease"; "Running from Published Images" and "Updating Production" rewritten for image hosts (enable, update, rollback only across migration-free releases, never build from source).CLAUDE.md). All of #1042, with items 2 and 3 as the owner answered them. Dev'sDeploy.modelisimage. The lint recipe gains--no-cache, which the dev host needs./qb-deploy-dev. Deploys a tag (git checkout v<version>,pull,up) instead of buildingmain.Migrations on an image host:
make migrate-saferuns inside the runningbackend, which on an image host is still the old release, so itsalembic upgrade headwould be the old code's. The update procedure instead runs the read-onlydb_preflightfrom the new image (docker compose run --rm migrate python -m app.cli db_preflight) after the pull and beforeup, and says not to usemigrate-safefor an update. The same weakness exists for a source-build self-hoster (git pulldoes not change the running container either); that is left for a follow-up.Changelog
changelog.d/1043-prereleases-and-image-deploys.changed.mdTest plan
check_version_sync.py:Version sync OK — app 4.4.1, bot contract v2.changelog.py check: OK (141 fragments).changelog.py render: prints today's fragments grouped under Added and the rest.docker compose -f docker-compose.yml -f docker-compose.images.yml configsucceeds, none of the six services has abuild:key, each has its 4.4.1 image; withCOMPOSE_FILEset in.env, plaindocker compose config --imagesresolves the overlay.tests/test_version_sync.py tests/test_changelog_script.py, 32 passed (10 new cases).release.yml's notes step run locally forv4.5.0-rc1(rendered prerelease notes),v4.4.1(unchanged path) andv9.9.9(the fallback).docker compose pull/upwith the overlay against a live stack, anddocker compose run --rm migrate python -m app.cli db_preflight. These are exercised first at the dev cutover.🤖 Generated with Claude Code