Adopt Dagger CI for container builds (Phase 1) #156

Merged
eblume merged 1 commit from feature/dagger-ci-phase1 into main 2026-02-11 15:38:31 -08:00
Owner

Summary

  • Add Dagger Python module (.dagger/) with build and publish functions for container images
  • Replace Docker buildx + skopeo composite action with dagger call publish in build-container.yaml
  • BuildKit's native push is compatible with Zot — skopeo workaround eliminated
  • Add Dagger CLI (v0.19.11) to forgejo-runner Dockerfile, bump runner to v2.6.0
  • Bootstrap step in workflow curl-installs dagger if not in runner (for first build on v2.5.1 runner)
  • Delete old .forgejo/actions/build-push-image/ composite action
  • Add GPLv3 LICENSE

Verified locally

  • dagger call build --src=. --container-name=nettest — builds ✓
  • dagger call publish --src=. --container-name=nettest --version=dagger-test — pushed to Zot ✓
  • dagger call build --src=. --container-name=forgejo-runner — new runner image builds ✓
  • Dagger CLI accessible inside built runner image ✓

Deployment sequence (after merge)

  1. mise run container-tag-and-release forgejo-runner v2.6.0 — old runner bootstraps dagger via curl, builds new runner
  2. argocd app sync forgejo-runner — runner restarts with v2.6.0 (dagger baked in)
  3. mise run container-tag-and-release nettest v0.13.0 — end-to-end test of new pipeline
  4. mise run container-list — verify tags

Not included (future phases)

  • Phase 2: docs build + Forgejo packages migration
  • Phase 3: runner simplification (remove skopeo, Node.js, etc.)
  • Phase 4: future workflows
## Summary - Add Dagger Python module (`.dagger/`) with `build` and `publish` functions for container images - Replace Docker buildx + skopeo composite action with `dagger call publish` in `build-container.yaml` - BuildKit's native push is compatible with Zot — **skopeo workaround eliminated** - Add Dagger CLI (v0.19.11) to forgejo-runner Dockerfile, bump runner to v2.6.0 - Bootstrap step in workflow curl-installs dagger if not in runner (for first build on v2.5.1 runner) - Delete old `.forgejo/actions/build-push-image/` composite action - Add GPLv3 LICENSE ## Verified locally - `dagger call build --src=. --container-name=nettest` — builds ✓ - `dagger call publish --src=. --container-name=nettest --version=dagger-test` — pushed to Zot ✓ - `dagger call build --src=. --container-name=forgejo-runner` — new runner image builds ✓ - Dagger CLI accessible inside built runner image ✓ ## Deployment sequence (after merge) 1. `mise run container-tag-and-release forgejo-runner v2.6.0` — old runner bootstraps dagger via curl, builds new runner 2. `argocd app sync forgejo-runner` — runner restarts with v2.6.0 (dagger baked in) 3. `mise run container-tag-and-release nettest v0.13.0` — end-to-end test of new pipeline 4. `mise run container-list` — verify tags ## Not included (future phases) - Phase 2: docs build + Forgejo packages migration - Phase 3: runner simplification (remove skopeo, Node.js, etc.) - Phase 4: future workflows
Replace the Docker buildx + skopeo composite action with a Dagger Python
module for building and publishing container images. BuildKit's native
push is compatible with Zot, eliminating the skopeo workaround entirely.

- Add Dagger Python module (.dagger/) with build/publish functions
- Update build-container.yaml workflow to use `dagger call publish`
- Add Dagger CLI to forgejo-runner image (v0.19.11)
- Bump runner version to v2.6.0 in ExternalSecret
- Add GPLv3 LICENSE
- Add dagger to mise.toml

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
eblume merged commit 1bc2b421a8 into main 2026-02-11 15:38:31 -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!156
No description provided.