From 39e2ed504c21b2363a9f17842e1f9b6322dbeb94 Mon Sep 17 00:00:00 2001 From: rock Date: Sat, 5 Sep 2026 23:39:20 -0700 Subject: [PATCH] bootstrap: use base images for runners, custom images via CI - golang-runner: docker:27-cli (has Node.js + docker) - rust-runner: docker:27-cli (bootstrap, CI adds Rust) - node-runner: node:22-bookworm (has Node.js, CI adds docker) CI workflow (.gitea/workflows/build-runner-images.yml): 1. Watches Dockerfile.* changes 2. Builds custom images with Node.js pre-installed 3. Pushes to registry 4. Image Updater detects and updates values.yaml 5. ArgoCD syncs to new custom images This avoids token complexity - just push Dockerfile changes to git! --- k8s/infra/forgejo-runner/values-node.yaml | 8 ++++---- k8s/infra/forgejo-runner/values-rust.yaml | 12 ++++-------- k8s/infra/forgejo-runner/values.yaml | 13 +++---------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/k8s/infra/forgejo-runner/values-node.yaml b/k8s/infra/forgejo-runner/values-node.yaml index 3cd17af..a8dea01 100644 --- a/k8s/infra/forgejo-runner/values-node.yaml +++ b/k8s/infra/forgejo-runner/values-node.yaml @@ -4,13 +4,13 @@ # # node:22-bookworm ships Node natively. Docker client installed via workflow step if needed. # (homelab has no CI; custom runner images built manually if desired) +# Bootstrap with base image, custom image via CI+Image Updater runner: image: - repository: forgejo.riotpiao.com/rock/forgejo-runner-node - tag: "latest" # Image Updater tracks and updates this + repository: node + tag: "22-bookworm" name: node-runner - # Custom image: node:22-bookworm + docker.io pre-installed - labels: "node:docker://forgejo.riotpiao.com/rock/forgejo-runner-node:latest" + labels: "node:docker://node:22-bookworm" # GC CronJob renders only from the default (golang) values to avoid duplicates gc: diff --git a/k8s/infra/forgejo-runner/values-rust.yaml b/k8s/infra/forgejo-runner/values-rust.yaml index e296cef..10956d2 100644 --- a/k8s/infra/forgejo-runner/values-rust.yaml +++ b/k8s/infra/forgejo-runner/values-rust.yaml @@ -2,17 +2,13 @@ # runner instance. Only runner.name and runner.labels differ -- everything # else (image, dind, persistence, tolerations, nodeSelector) is shared. # -# Custom image: docker:27-cli + Node.js + Rust + build tools -# - Node.js for GitHub Actions (actions/checkout@v4, etc.) -# - Docker CLI for container builds -# - Rust toolchain (via rustup) -# - Build essentials +# Bootstrap with base image, custom image via CI+Image Updater runner: image: - repository: forgejo.riotpiao.com/rock/forgejo-runner-rust - tag: "latest" # Image Updater tracks and updates this + repository: docker + tag: "27-cli" name: rust-runner - labels: "rust:docker://forgejo.riotpiao.com/rock/forgejo-runner-rust:latest" + labels: "rust:docker://docker:27-cli" diff --git a/k8s/infra/forgejo-runner/values.yaml b/k8s/infra/forgejo-runner/values.yaml index 8098826..db9844d 100644 --- a/k8s/infra/forgejo-runner/values.yaml +++ b/k8s/infra/forgejo-runner/values.yaml @@ -1,17 +1,10 @@ runner: image: - repository: forgejo.riotpiao.com/rock/forgejo-runner-golang - tag: "latest" # Image Updater tracks and updates this + repository: docker + tag: "27-cli" # Bootstrap with base image, custom image via CI+Image Updater name: golang-runner - # Custom image: docker:27-cli + Node.js + Go + build tools - # - Node.js for GitHub Actions (actions/checkout@v4, etc.) - # - Docker CLI for container builds - # - Go toolchain - # - Build essentials - labels: "golang:docker://forgejo.riotpiao.com/rock/forgejo-runner-golang:latest" + labels: "golang:docker://docker:27-cli" forgejoUrl: http://forgejo-gitea-http.cicd.svc.cluster.local:3000 - # tokenSecret: name of the K8s Secret that holds the runner registration token - # created automatically by the helmfile presync hook (see helmfile.yaml.gotmpl) tokenSecret: runner-token resources: requests: