Reorganize CI/CD bootstrap phases and add custom runner Dockerfile #50

Merged
eblume merged 4 commits from feature/p2-mirror-and-build into main 2026-01-23 18:50:28 -08:00
Owner

Summary

  • Reorder CI/CD bootstrap phases to address chicken-and-egg problem
  • P2 is now "Custom Runner Image" (stock runner lacks Node.js)
  • Add P3 for "Mirror Forgejo & Build from Source"
  • Rename P3 -> P4 (Self-Deploy), P4 -> P5 (Container Builds)
  • Add Dockerfile for custom runner with Node.js, npm, docker, build tools
  • Update overview with new phase structure, host mode notes, and cross-compilation challenge

Key Changes

Phase Reordering

Old New Name
P1 P1 Enable Actions (complete)
P2 P2 Custom Runner Image (new focus)
- P3 Mirror Forgejo & Build (new)
P3 P4 Self-Deploy
P4 P5 Container Builds

Custom Runner Dockerfile

The stock forgejo/runner:3.5.1 image lacks Node.js, so actions/checkout@v4 doesn't work. The new Dockerfile adds:

  • Node.js + npm (for GitHub Actions)
  • Docker CLI (for container builds)
  • Build tools (gcc, make, curl, jq)

Bootstrap Strategy

  1. Build custom runner image manually on gilbert (podman build)
  2. Push to zot registry
  3. Update deployment to use custom image
  4. Then enable auto-build workflow for runner

Deployment and Testing

  • Review plan changes
  • Build custom runner image manually and verify
  • Update runner deployment
  • Test actions/checkout@v4 works

🤖 Generated with Claude Code

## Summary - Reorder CI/CD bootstrap phases to address chicken-and-egg problem - P2 is now "Custom Runner Image" (stock runner lacks Node.js) - Add P3 for "Mirror Forgejo & Build from Source" - Rename P3 -> P4 (Self-Deploy), P4 -> P5 (Container Builds) - Add Dockerfile for custom runner with Node.js, npm, docker, build tools - Update overview with new phase structure, host mode notes, and cross-compilation challenge ## Key Changes ### Phase Reordering | Old | New | Name | |-----|-----|------| | P1 | P1 | Enable Actions (complete) | | P2 | P2 | **Custom Runner Image** (new focus) | | - | P3 | **Mirror Forgejo & Build** (new) | | P3 | P4 | Self-Deploy | | P4 | P5 | Container Builds | ### Custom Runner Dockerfile The stock `forgejo/runner:3.5.1` image lacks Node.js, so `actions/checkout@v4` doesn't work. The new Dockerfile adds: - Node.js + npm (for GitHub Actions) - Docker CLI (for container builds) - Build tools (gcc, make, curl, jq) ### Bootstrap Strategy 1. Build custom runner image manually on gilbert (podman build) 2. Push to zot registry 3. Update deployment to use custom image 4. Then enable auto-build workflow for runner ## Deployment and Testing - [x] Review plan changes - [x] Build custom runner image manually and verify - [x] Update runner deployment - [x] Test `actions/checkout@v4` works 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Reorganize CI/CD bootstrap phases, add custom runner Dockerfile
All checks were successful
Test CI / test (pull_request) Successful in 0s
15976f90d6
- 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>
Fix Dockerfile for Alpine, update deployment to use custom image
All checks were successful
Test CI / test (pull_request) Successful in 0s
85941b5960
- Base image is Alpine Linux, not Debian - use apk instead of apt-get
- Switch to root for package install, then back to user 1000
- Add musl-dev for C compilation, docker-cli for container builds
- Update deployment to use registry.tail8d86e.ts.net/blumeops/forgejo-runner:latest

Image built and pushed to zot registry.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update test workflow to use actions/checkout@v4
All checks were successful
Test CI / test (pull_request) Successful in 12s
63986f0404
Tests the custom runner image with Node.js and tools:
- actions/checkout@v4 (requires Node.js)
- Tool verification: node, npm, git, make, gcc, docker, curl, jq

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Mark Phase 2 complete - custom runner image working
All checks were successful
Test CI / test (pull_request) Successful in 2s
6cc6b19cb6
- actions/checkout@v4 works
- All tools verified: Node.js, npm, git, make, gcc, docker, curl, jq
- Auto-build workflow deferred (needs Docker socket mounting)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
eblume merged commit 5fcd122494 into main 2026-01-23 18:50:28 -08:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
eblume/blumeops!50
No description provided.