diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 54b51441..60d5a1a4 100755 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -104,13 +104,15 @@ have `ignore_changes` on `…container[0].image` (KEEL_IGNORE_IMAGE) so CI `:latest` + `imagePullPolicy: Always` (fresh pod each run) instead of a deploy step. **Never** `set image`/`rollout restart` operator-managed StatefulSets (memory id=740). Reference impls: `tuya_bridge/.woodpecker.yml`, -`job-hunter`. This reverses decision #12 of +`job-hunter`, `f1-stream` (viktor/f1-stream, extracted from this monorepo +2026-06-05). This reverses decision #12 of `docs/plans/2026-05-16-auto-upgrade-apps-design.md` for owned (not upstream) images. **Flow (GHA-migrated apps)**: `git push → GHA build+push DockerHub (8-char SHA) → POST Woodpecker API → kubectl set image` -**Migrated to GHA** (10): Website, k8s-portal, f1-stream, claude-memory-mcp, apple-health-data, audiblez-web, plotting-book, insta2spotify, audiobook-search, council-complaints +**Migrated to GHA** (9): Website, k8s-portal, claude-memory-mcp, apple-health-data, audiblez-web, plotting-book, insta2spotify, audiobook-search, council-complaints +**Woodpecker-native owned-app build** (Forgejo registry, build->deploy in one `.woodpecker.yml`): tuya_bridge, job-hunter, f1-stream (extracted to viktor/f1-stream 2026-06-05; Woodpecker repo id 166; the old github source is archived + its GHA repo-id-10 deactivated) **Woodpecker-only**: travel_blog (1.4GB content too large for GHA), infra pipelines (terragrunt apply, certbot, build-cli — need cluster access) **Per-project files**: @@ -119,7 +121,7 @@ images. - `.woodpecker/build-fallback.yml` — Old full build pipeline preserved (event: `deployment` — never auto-fires) **Woodpecker API**: Uses **numeric repo IDs** (`/api/repos/2/pipelines`), NOT owner/name paths (those return HTML). -Repo IDs: infra=1, Website=2, finance=3, health=4, travel_blog=5, webhook-handler=6, audiblez-web=9, f1-stream=10, plotting-book=43, claude-memory-mcp=78, infra-onboarding=79, council-complaints=TBD +Repo IDs: infra=1, Website=2, finance=3, health=4, travel_blog=5, webhook-handler=6, audiblez-web=9, plotting-book=43, claude-memory-mcp=78, infra-onboarding=79, council-complaints=TBD (f1-stream's old GHA-era github repo id 10 is deactivated; it's now a Woodpecker-native Forgejo build at repo id 166) **Woodpecker YAML gotchas**: - Commands with `${VAR}:${VAR}` must be **quoted** — unquoted `:` triggers YAML map parsing when vars are empty diff --git a/.claude/reference/service-catalog.md b/.claude/reference/service-catalog.md index f3079e3b..5e6a219e 100644 --- a/.claude/reference/service-catalog.md +++ b/.claude/reference/service-catalog.md @@ -46,7 +46,7 @@ | nextcloud | File sync/share | nextcloud | | calibre | E-book management (may be merged into ebooks stack) | calibre | | onlyoffice | Document editing | onlyoffice | -| f1-stream | F1 streaming (uses chrome-service for hmembeds verifier) | f1-stream | +| f1-stream | F1 streaming (uses chrome-service for hmembeds verifier); source in own repo `viktor/f1-stream` (Forgejo, extracted 2026-06-05), Woodpecker-native build->deploy (repo id 166) | f1-stream | | chrome-service | Headed Chromium WebSocket pool (`ws://chrome-service.chrome-service.svc:3000/`) for sibling services driving anti-bot embeds | chrome-service | | rybbit | Analytics | rybbit | | isponsorblocktv | SponsorBlock for TV | isponsorblocktv | diff --git a/docs/architecture/ci-cd.md b/docs/architecture/ci-cd.md index 4c0c020b..8a5990b6 100644 --- a/docs/architecture/ci-cd.md +++ b/docs/architecture/ci-cd.md @@ -58,10 +58,9 @@ graph LR ### Project Migration Status -**Migrated to GHA (9 projects)**: +**Migrated to GHA (8 projects)**: - Website - k8s-portal -- f1-stream - claude-memory-mcp - apple-health-data - audiblez-web @@ -69,6 +68,13 @@ graph LR - insta2spotify - book-search (audiobook-search) +**Woodpecker-native owned-app builds** (build + push to the Forgejo private +registry + `kubectl set image` rollout, all in one `.woodpecker.yml`; Keel +stays enrolled as a redundant net): `tuya_bridge`, `job-hunter`, `f1-stream`. +`f1-stream` was extracted from this monorepo to `viktor/f1-stream` on +2026-06-05 (Woodpecker repo id 166); the old github source is archived and its +GHA-era Woodpecker repo (id 10) is deactivated. + **Woodpecker-only (infra + large apps)**: - `travel_blog`: 5.7GB content directory exceeds GHA limits - Infra pipelines: require cluster access (terragrunt apply, certbot, build-cli) @@ -92,7 +98,6 @@ Woodpecker API uses numeric IDs (not owner/name): | travel_blog | 5 | | webhook-handler | 6 | | audiblez-web | 9 | -| f1-stream | 10 | | plotting-book | 43 | | claude-memory-mcp | 78 | | infra-onboarding | 79 |