Full release pipeline — local checks, preview deploy, monitoring, DB migrations, production deploy with rollback plan.
Taysi julkaisupipeline: tarkistukset → preview → seuranta → DB-migraatiot → tuotanto → vahvistus.
TARKEA: Tuotantoon ei koskaan deployta suoraan. Preview-deploy + seuranta AINA ensin.
git status
git log --oneline -20
git branch --show-current
Varmista:
main tai feature-branch)# Viimeisin tagi tai tuotanto-commit
git log --oneline $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD~10)..HEAD
git diff --stat $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD~10)..HEAD
Raportoi kayttajalle:
scripts/migrations/*.sql muuttunut)Aja kaikki CI-tarkistukset paikallisesti:
# Riippuvuudet
pnpm install
# Buildaa
pnpm build:deps
pnpm --filter @kp/web build
# Tyypitarkistus
pnpm typecheck
# Lint + format
pnpm lint
pnpm format
# Unit-testit + coverage
pnpm test
# Bundle-koko
pnpm size
Jos jokin failaa:
Tarkista onko DB-muutoksia:
# Onko uusia migraatioita?
git diff --name-only $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD~10)..HEAD -- scripts/migrations/
git diff --name-only $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD~10)..HEAD -- functions/_lib/db.ts
Jos DB-muutoksia loytyy:
scripts/migrations/*.sql)functions/_lib/db.ts — tarkista HOSTED_SCHEMA_SQLpnpm schema:hosted:file — varmista generoidun skeeman ajantasaisuusHUOM: Migraatiot ajetaan migration runnerilla — ei manuaalisesti.
# Tarkista mita migraatioita on odottamassa
DATABASE_URL="$DATABASE_URL" pnpm migrate:status
git push origin $(git branch --show-current)
# Seuraa GitHub Actions -ajoa
gh run list --limit 5
gh run watch # Odota uusin ajo loppuun
Jos CI failaa:
gh run view --log-failedCloudflare Pages luo automaattisesti preview-deployn jokaiselle branchille.
# Preview URL: https://<branch>.kryptoportfolio.pages.dev
# TAI: katso GitHub PR:n kommenteista Cloudflare-botti
Odota deployn valmistumista ja raportoi URL kayttajalle.
TARKEA: Tama vaihe on pakollinen ennen tuotantoon vientia.
# Korvaa URL oikealla preview-osoitteella
PREVIEW_URL="https://<branch>.kryptoportfolio.pages.dev"
curl -sf "${PREVIEW_URL}/api/health" | cat
Odotettu vastaus: {"ok":true}
Jos vaiheessa 2 tunnistettiin DB-muutoksia:
# Aja odottavat migraatiot preview-/staging-kantaan
DATABASE_URL="$PREVIEW_DATABASE_URL" pnpm migrate:run
Kysy kayttajalta haluaako han testata manuaalisesti. Raportoi testattavat asiat:
/api/health vastaa {"ok":true}Odota preview-deployn seuranta-aikaa:
Tarkista preview-lokit Cloudflaresta virheidentunnistusta varten:
# Jos wrangler on kaytettavissa
pnpm dlx wrangler pages deployment tail --project-name kryptoportfolio
Tarkista health uudelleen muutaman minuutin kuluttua:
curl -sf "${PREVIEW_URL}/api/health" | cat
Kysy kayttajalta: "Preview on toiminut X minuuttia ilman virheita. Jatketaanko tuotantoon?"
ALA JATKA VAIHEESEEN 5 ILMAN KAYTTAJAN VAHVISTUSTA.
Jos apps/runner/ on muuttunut:
cd apps/runner
pnpm dlx wrangler deploy --dry-run
Jos vaiheessa 2 tunnistettiin DB-muutoksia JA preview-testit menivat lapi:
DATABASE_URL="$DATABASE_URL" pnpm migrate:run
DATABASE_URL="$DATABASE_URL" pnpm migrate:status
Jos tyoskennellaan feature-branchilla:
# Luo PR jos ei viela olemassa
gh pr create --title "Release: <lyhyt kuvaus>" --body "$(cat <<'EOF'
## Release checklist
- [x] Local checks passed (typecheck, lint, test, build)
- [x] Preview deploy verified
- [x] Preview monitoring OK (no errors)
- [x] DB migrations applied (if any)
- [ ] Production smoke test
## Changes
<lista muutoksista>
EOF
)"
# TAI jos PR on jo olemassa ja valmis
gh pr merge --merge --delete-branch
Jos tyoskennellaan suoraan mainilla:
git push origin main
# GitHub Actions
gh run list --limit 3
gh run watch
# Cloudflare Pages tuotanto-deploy kaynnistyy automaattisesti main-pushista
Odota CI:n ja Cloudflare-deployn valmistumista ennen seuraavaa vaihetta.
Jos apps/runner/ on muuttunut:
cd apps/runner
pnpm dlx wrangler deploy
Varmista CRON_SECRET on asetettu:
pnpm dlx wrangler secret list
curl -sf https://kryptoportfolio.pages.dev/api/health | cat
Raportoi kayttajalle ja odota vahvistus:
Jos tuotanto-smoke test failaa, ohjeista kayttajaa:
git revert HEAD && git push origin main → Cloudflare deployttaa automaattisestiIF EXISTS -patternia)cd apps/runner && git stash && pnpm dlx wrangler deploy (edellinen versio)ALA poista dataa tai droppa tauluja ilman kayttajan nimenomaista lupaa.
Kysy kayttajalta haluaako tagata:
git tag -a v$(date +%Y.%m.%d) -m "Release $(date +%Y-%m-%d)"
git push origin --tags
docs/SESSION_CONTEXT.md — Merkitse release tehtydocs/ISSUE_LOG.md — Merkitse releasen mukana korjatut bugitTulosta kayttajalle:
→ Lue lokit (gh run view --log-failed), korjaa, pushaa uudelleen
→ Tarkista build output, wrangler.jsonc, env vars
→ ALA JATKA DEPLOYTA. Raportoi virhe kayttajalle. Tarkista pnpm migrate:status tilanne.
→ Aloita rollback-suunnitelma (Vaihe 7c). Raportoi kayttajalle valittomasti.
→ pnpm dlx wrangler tail kryptoportfolio-alert-runner — seuraa reaaliaikaiset lokit