- Reorder phases: P2 is now Custom Runner Image (was Mirror & Build) - Add P3 for Mirror Forgejo & Build from Source - Rename P3 -> P4 (Self-Deploy), P4 -> P5 (Container Builds) - Update overview with new phase structure and host mode notes - Add Dockerfile for custom runner with Node.js, npm, docker, build tools - Address chicken-and-egg problem: bootstrap manually, then automate - Document cross-compilation challenge for macOS ARM64 target Key insight: Stock runner lacks Node.js, so actions/checkout@v4 doesn't work. Building custom runner image is prerequisite for everything else. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Mark Phase 1 (Enable Actions) as completed with date - Check off all verification items in P1 - Add Step 6 to Phase 4 for runner logging and metrics - Update overview table with status column Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
## Summary - Refactor Forgejo app.ini to be managed by ansible with secrets from 1Password - Enable Forgejo Actions in config (`[actions] ENABLED = true`) - Add `repo.actions` to DEFAULT_REPO_UNITS - Clean up unused MySQL database fields (we use SQLite) ## Phase 1 Progress This PR covers the first part of Phase 1 (ci-cd-bootstrap plan): - [x] Refactor app.ini to ansible template - [x] Store secrets in 1Password - [x] Enable Actions in config - [ ] Deploy config changes (pending review) - [ ] Create runner registration token - [ ] Deploy runner to k8s - [ ] Test with simple workflow ## Deployment and Testing - [ ] Run `mise run provision-indri -- --tags forgejo` to deploy - [ ] Verify Forgejo restarts correctly - [ ] Verify Actions tab appears in repo settings 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: https://forge.tail8d86e.ts.net/eblume/blumeops/pulls/48