ci: CD da Buzzlabs — build da imagem e bump no Infra a cada commit na develop - #19
Merged
Conversation
… develop Mesmo fluxo já em uso no fork Buzzlabs/element-web: builda infra/synapse-docker/Dockerfile, empurra docker.buzzlabs.com.br/synapse:<AAAAMMDD-HHMMSS-sha7> e commita o bump da tag na main do repo Infra — o deploy em si é do ArgoCD (app matrix-buzzlabs / matrix.buzzlabs.com.br). Runner do GitHub, não o ARC do Hetzner: este repo é público e grupo de runner de organização não atende repositório público. Cache no cache do GitHub via build-push-action (e não `docker buildx` cru, que não enxerga o ACTIONS_RUNTIME_TOKEN): o build compila a extensão Rust e instala matrix-synapse[all], e empurrar isso por commit para o registry do Hetzner o faria crescer sem GC. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
O deployment do matrix-buzzlabs tem `strategy: Recreate` (PVC RWO): imagem quebrada derruba o Matrix interno em vez de travar o rollout e preservar o pod antigo. Buildar no PR (amd64, sem push, sem segredos) é o que impede isso de ser descoberto em produção. Também valida este próprio PR — eu não tinha conseguido buildar localmente (o disco da VM do Docker estourou, e a máquina é arm64 enquanto o CI é amd64). A concurrency sai do nível do workflow para o do job: o build-check cancela o run anterior do mesmo PR, enquanto o deploy nunca cancela um run em andamento. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
O lint-newsfile do upstream exige changelog.d/<numero do PR>.<tipo> em todo PR que toque algo fora de debian/. Sem ele os agregadores linting-done e tests-done ficam vermelhos. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Mesmo fluxo que o fork
Buzzlabs/element-webjá usa desde 2026-09-11. Par deste PR: Buzzlabs/Infra#71.Só o
matrix-buzzlabsé bumpado. O synapse do nsdefault(nexojornal) segue em:latestcom bump manual — é produção de cliente.O que muda no modelo de deploy
Hoje os três containers de synapse referenciam
docker.buzzlabs.com.br/synapsesem tag (=:latest) comimagePullPolicy: Always, ou seja: o deploy acontece por restart de pod, não por git. É o risco 7 dohetzner/STATE.md.O primeiro run deste CD converte a linha do
matrix-buzzlabspara tag datada — por isso o PR do Infra não pina tag nenhuma, e não há problema de galinha-e-ovo com uma tag que ainda não existe no registry.Diferenças em relação ao workflow do element-web
infra/synapse-docker/), não o do upstream: instalamatrix-synapse[all]do PyPI e sobrepõe o código do fork compip install -e.git checkout --detach— aquilo existia por causa dodocker-link-repos.shdo element-web, que não tem equivalente aqui.type=ghaviabuild-push-action, e nãodocker buildxcru: o backend de cache do GitHub precisa doACTIONS_RUNTIME_TOKEN, que não chega ao shell de umrun:. Vale a pena aqui porque este build compila a extensão Rust; no element-web o build a frio eram 3min e o cache não se pagava. Os pins dedocker/*são os que este repo já usa nodocker.yml.O resto é idêntico: guarda de ref, concurrency com coalescing, token escopado da App (
permission-contents: write), push com retry.zizmorlimpo.O que não consegui validar
Tentei buildar localmente e o disco da VM do Docker estourou na etapa 7 de 13. Ficou validado até o
pip install matrix-synapse[all](resolveu deps e compilou wheels); não ficaram validados osCOPYdo código do fork e opip install -e /appque compila o Rust.O primeiro run do CD é o teste. Se falhar, falha sem estrago: sem imagem publicada, sem bump, sem deploy — só um job vermelho.
O deployment do
matrix-buzzlabstemstrategy: Recreate(PVC RWO): o pod velho morre antes do novo subir. Imagem quebrada = indisponibilidade do Matrix interno, não rollout parado. OreadinessProbenão protege contra isso. Rollback = reverter o commitdeploy(synapse): …no Infra.🤖 Generated with Claude Code