Simplify runner image (Dagger Phase 3) #162

Merged
eblume merged 1 commit from dagger-phase3-runner into main 2026-02-11 17:24:21 -08:00
Owner

Summary

With Phases 1 and 2 complete, the runner image no longer needs most of its bundled tools. This PR strips it down and adds what was missing.

Removed (now inside Dagger containers):

  • Node.js 24.x
  • Docker CLI + buildx plugin
  • skopeo
  • gnupg, lsb-release, xz-utils

Added:

  • tzdata — fixes the TZ env var (#159, #160, #161) so TZ=America/Los_Angeles actually works
  • flyctl — was being installed from scratch every release

Workflow changes:

  • Remove "Ensure Dagger CLI" bootstrap steps from both workflows (Dagger is in the image)
  • Remove "Install flyctl" step from build-blumeops (flyctl is in the image)
  • Remove job-level TZ from build-blumeops (moved to runner configmap runner.envs)
  • Set TZ: America/Los_Angeles in runner configmap so all job containers inherit it

Deployment

After merge:

  1. Build and release the new runner image: mise run container-release forgejo-runner v2.0.0
  2. Sync the runner: argocd app sync forgejo-runner
  3. Verify: kubectl -n forgejo-runner exec deploy/forgejo-runner -c runner -- date (but the real test is running a docs release and checking the changelog date)
## Summary With Phases 1 and 2 complete, the runner image no longer needs most of its bundled tools. This PR strips it down and adds what was missing. **Removed** (now inside Dagger containers): - Node.js 24.x - Docker CLI + buildx plugin - skopeo - gnupg, lsb-release, xz-utils **Added:** - `tzdata` — fixes the TZ env var (#159, #160, #161) so `TZ=America/Los_Angeles` actually works - `flyctl` — was being installed from scratch every release **Workflow changes:** - Remove "Ensure Dagger CLI" bootstrap steps from both workflows (Dagger is in the image) - Remove "Install flyctl" step from build-blumeops (flyctl is in the image) - Remove job-level `TZ` from build-blumeops (moved to runner configmap `runner.envs`) - Set `TZ: America/Los_Angeles` in runner configmap so all job containers inherit it ## Deployment After merge: 1. Build and release the new runner image: `mise run container-release forgejo-runner v2.0.0` 2. Sync the runner: `argocd app sync forgejo-runner` 3. Verify: `kubectl -n forgejo-runner exec deploy/forgejo-runner -c runner -- date` (but the real test is running a docs release and checking the changelog date)
Remove Node.js, Docker CLI, buildx, skopeo, gnupg, lsb-release, and
xz-utils from the job execution image — all build tools now live inside
Dagger containers. Add tzdata (for TZ env var support) and flyctl.

Remove "Ensure Dagger CLI" bootstrap steps from both workflows and the
"Install flyctl" step from build-blumeops. Set TZ=America/Los_Angeles
in the runner configmap so all job containers inherit it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
eblume merged commit 95364dcb48 into main 2026-02-11 17:24:21 -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!162
No description provided.