ci: promote bot to a 'deploy' image channel only on [deploy] trigger
CI / compile (pull_request) Successful in 8s
CI / unit (pull_request) Successful in 26s
CI / integration (pull_request) Successful in 28s

The production bot tracks a separate image, conjurer-bot-deploy, so it
updates only when a commit message contains [deploy] - the test bot and
librarian keep updating on every build. On a [deploy] commit the already-
built conjurer-bot:<sha> is re-tagged (same bytes, no rebuild) and pushed
as conjurer-bot-deploy:<sha>; the deploy repo's image-updater tracks that.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-03 20:10:21 +02:00
parent d4c6d78c2e
commit 41050fa879
+17
View File
@@ -22,6 +22,23 @@ jobs:
docker build -f docker/Dockerfile.bot -t gitea.czernobog.pl/gitea/conjurer-bot:$TAG . docker build -f docker/Dockerfile.bot -t gitea.czernobog.pl/gitea/conjurer-bot:$TAG .
docker push gitea.czernobog.pl/gitea/conjurer-bot:$TAG docker push gitea.czernobog.pl/gitea/conjurer-bot:$TAG
# DEPLOY channel: the production (deploy) bot tracks a SEPARATE image,
# conjurer-bot-deploy, which only gets a new tag when the commit message
# contains the trigger "[deploy]". So the test bot & librarian update on
# every build, but the deploy bot only on commits you explicitly promote.
# Same bytes as conjurer-bot:$TAG - just re-tagged, no rebuild.
- name: Promote bot to deploy channel (only on [deploy] in commit message)
run: |
TAG=${GITHUB_SHA::8}
MSG="$(git log -1 --pretty=%B)"
if echo "$MSG" | grep -qiF '[deploy]'; then
echo "Commit message contains [deploy] -> promoting conjurer-bot-deploy:$TAG"
docker tag gitea.czernobog.pl/gitea/conjurer-bot:$TAG gitea.czernobog.pl/gitea/conjurer-bot-deploy:$TAG
docker push gitea.czernobog.pl/gitea/conjurer-bot-deploy:$TAG
else
echo "No [deploy] trigger in commit message -> deploy bot image left unchanged"
fi
# Docker-owe: musician i share lekkie, radio CIĘŻKIE (opam+OCaml+liquidsoap) # Docker-owe: musician i share lekkie, radio CIĘŻKIE (opam+OCaml+liquidsoap)
- name: Build docker-stack images (musician, share) - name: Build docker-stack images (musician, share)
run: | run: |