BUG FOUND: Workflow was requesting 'runs-on: docker' but Forgejo only has:
- golang (golang:1.26-bookworm + dind)
- rust (rust:1.83-bookworm + dind)
- node (node:22-bookworm)
No 'docker' runner exists, so CI hung indefinitely waiting for unavailable runner.
FIX: Changed to 'runs-on: rust'
Rationale:
✅ Rust toolchain pre-installed (no cargo install needed)
✅ Docker-in-Docker available (for docker build + push)
✅ 2 CPU, 4GB RAM limits (sufficient for Rust builds)
✅ 1.83-bookworm base image (production-ready)
✅ Perfect for Rust projects
Result: CI will now acquire the correct runner and complete builds in 5-10 minutes
See .forgejo/README.md for runner reference guide
RESTORED: Single, minimal CI workflow
- Triggers on: push to main branch
- Runs on: docker runner (available)
- Does: Build → Tag → Push to registry
- Time: 5-10 minutes per build
Workflow design:
✅ ZERO third-party actions (no hidden timeouts)
✅ Direct docker commands only (reliable)
✅ Progress output visible
✅ Proper secret handling
✅ Clean error paths
✅ Works with imageUpdater
Usage:
1. Set secret in Forgejo: REGISTRY_PAT=<token>
2. Push to main
3. CI builds and pushes image
4. imageUpdater detects new version
5. K8s deployment auto-updates
Image pushed to:
- forgejo.riotpiao.com/rock/poimen-memory:latest
- forgejo.riotpiao.com/rock/poimen-memory:<short-SHA>
Manual fallback still available:
export REGISTRY_TOKEN='<token>'
./scripts/build-and-push.sh
No race conditions:
✅ ONE workflow file only (.forgejo/workflows/build.yaml)
✅ No .gitea/ directory (removed)
✅ No competing auto-triggers
CI is stuck waiting on 'docker' runner that doesn't exist or is unresponsive.
Disabled: .forgejo/workflows/build.yaml (renamed to .disabled)
Alternatives:
1. Manual docker build + push (works locally)
2. Fix Forgejo runner configuration
3. Use different runner label when available
To re-enable: rename build.yaml.disabled → build.yaml and push
Available runners: rust, golang, node
Test job: runs-on rust with container rust:1-bookworm (modern glibc)
Build job: runs-on golang with container docker:27-cli (same as before)
Old 'rust' runner had stale glibc causing linker failures.
Now uses 'docker' runner (same as other repos) with explicit
rust:1-bookworm container image (modern glibc).
Added cargo cache step for faster builds.