diff --git a/.gitea/workflows/build-runner-images.yml b/.gitea/workflows/build-runner-images.yml index 251d45e..12d1621 100644 --- a/.gitea/workflows/build-runner-images.yml +++ b/.gitea/workflows/build-runner-images.yml @@ -18,13 +18,16 @@ on: jobs: build-runners: runs-on: golang - env: - REGISTRY: forgejo.riotpiao.com - IMAGE_BASE: forgejo.riotpiao.com/rock + # Unified CI pattern: golang label → golang:1.26-bookworm (Debian, root, apt-get) + # Install Node.js + docker in steps. actions/checkout@v4 needs Node.js. steps: - - name: Clone repository + - name: Install dependencies run: | - git clone --depth 1 https://forgejo.riotpiao.com/rock/homelab.git . + apt-get update + apt-get install -y --no-install-recommends nodejs docker.io + rm -rf /var/lib/apt/lists/* + + - uses: actions/checkout@v4 - name: Get commit SHA id: sha @@ -32,7 +35,7 @@ jobs: SHORT_SHA=$(git rev-parse --short HEAD) echo "short_sha=${SHORT_SHA}" >> $GITHUB_OUTPUT - - name: Build all runner images (test on PR, push on main) + - name: Build all runner images run: | set -e for RUNNER in golang rust node; do @@ -50,7 +53,6 @@ jobs: echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY}" \ --username "${REGISTRY_USER}" --password-stdin for RUNNER in golang rust node; do - echo "📤 Pushing ${RUNNER}-runner:${{ steps.sha.outputs.short_sha }}" docker push "${IMAGE_BASE}/forgejo-runner-${RUNNER}:${{ steps.sha.outputs.short_sha }}" docker push "${IMAGE_BASE}/forgejo-runner-${RUNNER}:latest" echo "✅ Pushed ${RUNNER}-runner" @@ -58,3 +60,6 @@ jobs: env: REGISTRY_USER: ${{ secrets.FORGEJO_REGISTRY_USER }} REGISTRY_TOKEN: ${{ secrets.FORGEJO_REGISTRY_TOKEN }} + env: + REGISTRY: forgejo.riotpiao.com + IMAGE_BASE: forgejo.riotpiao.com/rock diff --git a/k8s/infra/forgejo-runner/values-node.yaml b/k8s/infra/forgejo-runner/values-node.yaml index 2015d39..e75a0aa 100644 --- a/k8s/infra/forgejo-runner/values-node.yaml +++ b/k8s/infra/forgejo-runner/values-node.yaml @@ -2,15 +2,14 @@ # runner instance. Only runner.name and runner.labels differ -- everything # else (image, dind, persistence, tolerations, nodeSelector) is shared. # -# 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 runner image (already has Node.js), CI builds custom +# Label image: node:22-bookworm — Debian, root, apt-get, Node.js, npm, git. +# Install docker in workflow steps as needed. runner: image: repository: code.forgejo.org/forgejo/runner tag: "6" name: node-runner - labels: "node:docker://code.forgejo.org/forgejo/runner:6" + 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 3e56586..b645cf3 100644 --- a/k8s/infra/forgejo-runner/values-rust.yaml +++ b/k8s/infra/forgejo-runner/values-rust.yaml @@ -2,13 +2,14 @@ # runner instance. Only runner.name and runner.labels differ -- everything # else (image, dind, persistence, tolerations, nodeSelector) is shared. # -# Bootstrap with runner image, CI builds custom with Node.js+Rust +# Label image: rust:1-bookworm — Debian, root, apt-get, Rust, cargo, git. +# Install Node.js/docker in workflow steps as needed. runner: image: repository: code.forgejo.org/forgejo/runner tag: "6" name: rust-runner - labels: "rust:docker://code.forgejo.org/forgejo/runner:6" + labels: "rust:docker://rust:1-bookworm" diff --git a/k8s/infra/forgejo-runner/values.yaml b/k8s/infra/forgejo-runner/values.yaml index 71aea9d..adb07b0 100644 --- a/k8s/infra/forgejo-runner/values.yaml +++ b/k8s/infra/forgejo-runner/values.yaml @@ -1,9 +1,12 @@ runner: image: repository: code.forgejo.org/forgejo/runner - tag: "6" # Bootstrap with runner image, CI builds custom with Node.js + tag: "6" name: golang-runner - labels: "golang:docker://code.forgejo.org/forgejo/runner:6" + # Label image is what workflow steps run in (NOT the runner daemon image). + # golang:1.26-bookworm: Debian, root, apt-get, Go, git. + # Install Node.js/docker in workflow steps as needed. + labels: "golang:docker://golang:1.26-bookworm" forgejoUrl: http://forgejo-gitea-http.cicd.svc.cluster.local:3000 tokenSecret: runner-token resources: