Kapitel 12: Udrulning¶
Målgruppe: DevOps, platformingeniører
CI/CD-pipeline¶
Push to unified-platform
│
▼
build-and-push.yml (automatic)
├── Run contract & recovery tests
├── Build API image
├── Build Dashboard image
└── Push to Artifact Registry
│
▼ (manual trigger)
deploy.yml (workflow_dispatch)
├── SSH into VM via IAP tunnel
├── git pull on VM
├── docker compose pull (prebuilt images)
├── docker compose up -d --force-recreate
├── Health check (60s wait + curl localhost:8000/health)
└── Post-deploy contract check
Hvorfor udrulning er manuel¶
Automatisk udrulning ved push blev deaktiveret efter en hændelse i januar 2026, hvor automatiske udrulninger kolliderede med manuelle SSH-udrulninger, hvilket ødelagde containere og forårsagede datatab. Udrulningsworkflowet kræver nu:
- Manuel aktivering via GitHub Actions-brugerfladen ("Run workflow")
- Eksplicit valg af mål (staging eller produktion)
- Indtastning af
DEPLOYsom bekræftelse - Valgfrit begrundelsefelt til revisionsloggen
Image-tags¶
Images tagges med det korte git-SHA: sha-XXXXXXX. Udrulningstrinnet bruger GITHUB_SHA til at konstruere tagget, så den udrullede version altid svarer til et bestemt commit.
Sådan udrulles¶
- Bekræft at buildet er bestået:
gh run list --workflow=build-and-push.yml --limit=1 - Aktivér udrulning:
gh workflow run deploy.yml \ --ref unified-platform \ -f target=production \ -f confirm=DEPLOY \ -f reason="your reason here" - Overvåg:
gh run watch <run_id> --exit-status - Verificér:
curl -sS https://scan.rtb.cat/api/health | jq -r '.git_sha,.version'
Verificering af en udrulning¶
Endpointet /api/health returnerer:
{
"git_sha": "94e9cbb0",
"version": "sha-94e9cbb"
}
Sammenlign git_sha med det commit, du havde til hensigt at udrulle.
Kontrakttjek efter udrulning¶
Efter udrulning kører workflowet scripts/contracts_check.py inde i API-containeren. Dette validerer, at datakontrakterne (ufravigelige regler fra import til API-output) overholdes. Hvis tjekket fejler:
- Med
ALLOW_CONTRACT_FAILURE=false(standard): udrulningen markeres som fejlet. - Med
ALLOW_CONTRACT_FAILURE=true(midlertidig omgåelse): udrulningen lykkes med en advarsel. Denne omgåelse skal fjernes efter undersøgelse.
Staging vs. produktion¶
| Miljø | VM-navn | Domæne |
|---|---|---|
| Staging | catscan-production-sg2 |
(intern) |
| Produktion | catscan-production-sg |
scan.rtb.cat |
Udrul til staging først, verificér, og udrul derefter til produktion.
Tilbagerulning¶
For at rulle tilbage udrulles et tidligere kendt-godt commit:
- Identificér det seneste gode SHA fra git-loggen eller tidligere udrulningskørsler.
- Checkout dette SHA på unified-platform (eller brug
--refmed committet). - Aktivér udrulningsworkflowet.
Der er ingen dedikeret tilbagerulningsmekanisme. Det er blot udrulning af en ældre version.
Relateret¶
- Arkitekturoversigt: hvad der udrulles
- Sundhedsovervågning: verificering af at udrulningen lykkedes