Skip to content

fix(actions-runner-system): retire no-op actions-runner-buildx custom image - #1377

Merged
Aviator-Coding merged 2 commits into
mainfrom
fm/homeops-retire-runner-buildx-image
Aug 22, 2026
Merged

fix(actions-runner-system): retire no-op actions-runner-buildx custom image#1377
Aviator-Coding merged 2 commits into
mainfrom
fm/homeops-retire-runner-buildx-image

Conversation

@Aviator-Coding

Copy link
Copy Markdown
Owner

Intent

Retire the actions-runner-buildx custom runner image; it is provably a no-op. Rationale (from prior investigation, report section 2.6): ghcr.io/aviator-coding/actions-runner-buildx:2.336.0 has 13 layers vs its base ghcr.io/home-operations/actions-runner:2.336.0's 12 - the same 12 plus one empty layer, byte-identical 717.3 MiB. The Dockerfile is two LABELs and RUN docker buildx version, a build-time assertion with no filesystem content. Its capability is unusable in the runner pod, which has no Docker daemon. It is also amd64-only where its base is amd64+arm64.

Scope required before deleting anything: re-verify the layer comparison live (pull both manifests and diff layer digests directly, do not trust the report's numbers unchecked) - done: confirmed via GHCR registry API that all 12 base layers match digest-for-digest, plus one 32-byte empty layer, and confirmed amd64-only vs base's amd64+arm64.

Confirmed, so implemented:

  1. Deleted .github/docker/actions-runner-buildx/ and .github/workflows/build-actions-runner-buildx.yaml.
  2. Pointed gha-runner-scale-set-aviator-coding-home-ops's HelmRelease image: field back at the base ghcr.io/home-operations/actions-runner image, matching the tag scheme (renovate comment + tag@digest pin) already used by the sibling ai-k8s-sandbox scale-set in the same HelmRelease directory tree, which already references the identical base image/digest.
  3. Checked for a two-step Renovate chain (base FROM bump -> build -> helmrelease tag bump) that only existed to track the custom image: none found in .renovate/ - the version tracking was purely the now-deleted Dockerfile FROM line and workflow, so no separate Renovate config changes were needed.
  4. GHCR package deletion (ghcr.io/aviator-coding/actions-runner-buildx) was attempted but is not possible from this environment - the gh token lacks read:packages scope. This must be noted explicitly in the PR description as a manual cleanup step for whoever merges.

Also updated two docs that referenced the deleted image/workflow: kubernetes/apps/actions-runner-system/TROUBLESHOOTING.md (rewrote the 'Custom Runner Image' section to reflect retirement, kept the still-accurate podman/no-Docker-daemon findings) and .github/workflows/README.md (removed the workflow's table row and section).

Validation performed: flux-local test --all-namespaces --enable-helm (225/225 passed, including the modified HelmRelease's both scale-set Kustomizations) and kustomize build on the app path, both clean. Rendered HelmRelease output confirmed both scale-sets' runner containers now use image: ghcr.io/home-operations/actions-runner:2.336.0@sha256:281a9a090522fafbf4967f158b8c97d03552b1978b688893c5f7cb1944bc5fe5.

Important operational note for the PR description: this changes the image backing a LIVE ARC scale set (gha-runner-scale-set-aviator-coding-home-ops). The actual image swap only takes effect once Flux reconciles the merge - a runner pod will restart on the new image at that point. This is expected and should be called out plainly so the merger understands the consequence, not hidden as a side effect.

What Changed

  • Deleted .github/docker/actions-runner-buildx/Dockerfile and .github/workflows/build-actions-runner-buildx.yaml; confirmed via GHCR registry API layer-digest comparison that the custom image was a byte-identical no-op rebuild of its base (same 12 layers plus one 32-byte empty layer) and amd64-only versus the base's amd64+arm64.
  • Repointed the gha-runner-scale-set-aviator-coding-home-ops HelmRelease image: field from ghcr.io/aviator-coding/actions-runner-buildx:2.336.0 back to the base ghcr.io/home-operations/actions-runner:2.336.0 (tag@digest pin, matching the sibling ai-k8s-sandbox scale-set's existing reference).
  • Updated .github/workflows/README.md (removed the build-actions-runner-buildx table row and section) and kubernetes/apps/actions-runner-system/TROUBLESHOOTING.md (rewrote "Custom Runner Image" to "Runner Pod Capabilities", reflecting that both scale sets now run the stock base image; retained the still-accurate podman/no-Docker-daemon findings).

Manual cleanup needed after merge: the ghcr.io/aviator-coding/actions-runner-buildx GHCR package itself could not be deleted from this environment (token lacks read:packages scope) and should be removed by whoever merges.

Operational note: this changes the image backing the live gha-runner-scale-set-aviator-coding-home-ops ARC scale set. The swap only takes effect once Flux reconciles the merge, at which point a runner pod will restart onto the new (base) image - expected, not a side effect to be surprised by.

Risk Assessment

✅ Low: Pure deletion of a dead build pipeline plus a doc rewrite and a HelmRelease image swap that byte-for-byte matches the already-live sibling scale-set's image reference; no stale references remain anywhere in the repo, and the change is fully consistent with every constraint in the stated intent.

Testing

Installed kustomize/helm/flux-local via mise (not present in the environment), then rebuilt and fully Helm-inflated the actions-runner-system manifests: kustomize build succeeded and flux-local's full-cluster-tree test run (required for HelmRepository source resolution) passed all 225 nodes including both affected scale-set HelmReleases. The fully rendered AutoscalingRunnerSet objects for both gha-runner-scale-set-aviator-coding-home-ops and gha-rs-ac-ai-k8s-sandbox now carry the identical ghcr.io/home-operations/actions-runner:2.336.0@sha256:281a9a09... image, the retired ghcr.io/aviator-coding/actions-runner-buildx image is absent from the entire rendered cluster output, and a repo-wide grep found no leftover functional references to the deleted Dockerfile or workflow. No findings; worktree left clean.

Evidence: Fully Helm-inflated runner manifests (AutoscalingRunnerSet + HelmRelease) for both scale-sets

AutoscalingRunnerSet gha-runner-scale-set-aviator-coding-home-ops and gha-rs-ac-ai-k8s-sandbox both now render the runner container as image: ghcr.io/home-operations/actions-runner:2.336.0@sha256:281a9a090522fafbf4967f158b8c97d03552b1978b688893c5f7cb1944bc5fe5 (identical digest on both). Old ghcr.io/aviator-coding/actions-runner-buildx image does not appear anywhere in the 1945-document fully rendered cluster manifest.

# ===== AutoscalingRunnerSet: gha-runner-scale-set-aviator-coding-home-ops (the changed scale-set) =====

---
# Source: gha-runner-scale-set/templates/autoscalingrunnerset.yaml
apiVersion: actions.github.com/v1alpha1
kind: AutoscalingRunnerSet
metadata:
  name: gha-runner-scale-set-aviator-coding-home-ops
  namespace: actions-runner-system
  labels:
    app.kubernetes.io/component: "autoscaling-runner-set"
    helm.sh/chart: gha-rs-0.14.2
    app.kubernetes.io/name: gha-runner-scale-set-aviator-coding-home-ops
    app.kubernetes.io/instance: gha-runner-scale-set-aviator-coding-home-ops
    app.kubernetes.io/version: "0.14.2"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: gha-rs
    actions.github.com/scale-set-name: gha-runner-scale-set-aviator-coding-home-ops
    actions.github.com/scale-set-namespace: actions-runner-system
  annotations:
    secret.reloader.stakater.com/reload: "aviator-coding-runner-secret"
    actions.github.com/values-hash: be7fc68643c68f8a8f9b3f6657b57d41d8ef3623d31c30cf13c503456dad106
    actions.github.com/cleanup-manager-role-binding: gha-runner-scale-set-aviator-coding-home-ops-gha-rs-manager
    actions.github.com/cleanup-manager-role-name: gha-runner-scale-set-aviator-coding-home-ops-gha-rs-manager
    config.kubernetes.io/index: '3'
    internal.config.kubernetes.io/index: '3'
spec:
  githubConfigUrl: https://github.com/aviator-coding/home-ops
  githubConfigSecret: aviator-coding-runner-secret
  maxRunners: 15
  minRunners: 1
  listenerTemplate:
    spec:
      containers:
      - name: listener
        resources:
          limits:
            cpu: 200m
            memory: 256Mi
          requests:
            cpu: 50m
            memory: 64Mi
      priorityClassName: gha-runner-infrastructure
  listenerMetrics:
    counters:
      gha_completed_jobs_total:
        labels:
        - repository
        - organization
        - enterprise
        - job_name
        - event_name
        - job_result
      gha_started_jobs_total:
        labels:
        - repository
        - organization
        - enterprise
        - job_name
        - event_name
    gauges:
      gha_assigned_jobs:
        labels:
        - name
        - namespace
        - repository
        - organization
        - enterprise
      gha_busy_runners:
        labels:
        - name
        - namespace
        - repository
        - organization
        - enterprise
      gha_desired_runners:
        labels:
        - name
        - namespace
        - repository
        - organization
        - enterprise
      gha_idle_runners:
        labels:
        - name
        - namespace
        - repository
        - organization
        - enterprise
      gha_max_runners:
        labels:
        - name
        - namespace
        - repository
        - organization
        - enterprise
      gha_min_runners:
        labels:
        - name
        - namespace
        - repository
        - organization
        - enterprise
      gha_registered_runners:
        labels:
        - name
        - namespace
        - repository
        - organization
        - enterprise
      gha_running_jobs:
        labels:
        - name
        - namespace
        - repository
        - organization
        - enterprise
    histograms:
      gha_job_execution_duration_seconds:
        labels:
        - repository
        - organization
        - enterprise
        - job_name
        - event_name
        - job_result
      gha_job_startup_duration_seconds:
        labels:
        - repository
        - organization
        - enterprise
        - job_name
        - event_name
  template:
    metadata:
      annotations:
        secret.reloader.stakater.com/reload: aviator-coding-runner-secret
    spec:
      securityContext:
        fsGroup: 1001
      terminationGracePeriodSeconds: 30
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/control-plane
        operator: Exists
      restartPolicy: Never
      serviceAccountName: actions-runner
      initContainers:
      - command:
        - cp
        - /usr/local/bin/talosctl
        - /talos-bin/talosctl
        image: ghcr.io/aviator-coding/talosctl-busybox:v1.13.3
        name: talosctl-installer
        volumeMounts:
        - mountPath: /talos-bin
          name: talos-bin
      containers:
      - name: runner
        command:
        - /home/runner/run.sh
        image: ghcr.io/home-operations/actions-runner:2.336.0@sha256:281a9a090522fafbf4967f158b8c97d03552b1978b688893c5f7cb1944bc5fe5
        resources:
          limits:
            cpu: "2"
            memory: 8Gi
          requests:
            cpu: 200m
            memory: 512Mi
        env:
        - name: ACTIONS_RUNNER_REQUIRE_JOB_CONTAINER
          value: "false"
        - name: NODE_IP
          valueFrom:
            fieldRef:
              fieldPath: status.hostIP
        - name: NODE
          valueFrom:
            fieldRef:
              fieldPath: status.hostIP
        - name: TALOSCONFIG
          value: /var/run/secrets/talos.dev/talosconfig
        - name: ACTIONS_RUNNER_PRINT_LOG_TO_STDOUT
          value: "1"
        volumeMounts:
        - mountPath: /home/runner/_work
          name: work
        - mountPath: /var/run/secrets/talos.dev
          name: talos
          readOnly: true
        - mountPath: /usr/local/bin/talosctl
          name: talos-bin
          subPath: talosctl
      volumes:
      - ephemeral:
          volumeClaimTemplate:
            spec:
              accessModes:
              - ReadWriteOnce
              resources:
                requests:
                  storage: 20Gi
              storageClassName: ceph-block
        name: work
      - name: talos
        secret:
          secretName: actions-runner
      - emptyDir: {}
        name: talos-bin

---
# ===== AutoscalingRunnerSet: gha-rs-ac-ai-k8s-sandbox (sibling scale-set, for comparison) =====

---
# Source: gha-runner-scale-set/templates/autoscalingrunnerset.yaml
apiVersion: actions.github.com/v1alpha1
kind: AutoscalingRunnerSet
metadata:
  name: gha-rs-ac-ai-k8s-sandbox
  namespace: actions-runner-system
  labels:
    app.kubernetes.io/component: "autoscaling-runner-set"
    helm.sh/chart: gha-rs-0.14.2
    app.kubernetes.io/name: gha-rs-ac-ai-k8s-sandbox
    app.kubernetes.io/instance: gha-rs-ac-ai-k8s-sandbox
    app.kubernetes.io/version: "0.14.2"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: gha-rs
    actions.github.com/scale-set-name: gha-rs-ac-ai-k8s-sandbox
    actions.github.com/scale-set-namespace: actions-runner-system
  annotations:
    secret.reloader.stakater.com/reload: "aviator-coding-runner-secret"
    actions.github.com/values-hash: 04170f026451b1433bdcfc4f2646db6512982290925dbf06f80cacd3a3298d1
    actions.github.com/cleanup-manager-role-binding: gha-rs-ac-ai-k8s-sandbox-gha-rs-manager
    actions.github.com/cleanup-manager-role-name: gha-rs-ac-ai-k8s-sandbox-gha-rs-manager
    config.kubernetes.io/index: '3'
    internal.config.kubernetes.io/index: '3'
spec:
  githubConfigUrl: https://github.com/aviator-coding/ai-k8s-sandbox
  githubConfigSecret: aviator-coding-runner-secret
  maxRunners: 15
  minRunners: 1
  listenerTemplate:
    spec:
      containers:
      - name: listener
        resources:
          limits:
            cpu: 200m
            memory: 256Mi
          requests:
            cpu: 50m
            memory: 64Mi
      priorityClassName: gha-runner-infrastructure
  listenerMetrics:
    counters:
      gha_completed_jobs_total:
        labels:
        - repository
        - organization
        - enterprise
        - job_name
        - event_name
        - job_result
      gha_started_jobs_total:
        labels:
        - repository
        - organization
        - enterprise
        - job_name
        - event_name
    gauges:
      gha_assigned_jobs:
        labels:
        - name
        - namespace
        - repository
        - organization
        - enterprise
      gha_busy_runners:
        labels:
        - name
        - namespace
        - repository
        - organization
        - enterprise
      gha_desired_runners:
        labels:
  

... [9533 bytes truncated] ...

rs:
        - command:
          - cp
          - /usr/local/bin/talosctl
          - /talos-bin/talosctl
          image: ghcr.io/aviator-coding/talosctl-busybox:v1.13.3
          name: talosctl-installer
          volumeMounts:
          - mountPath: /talos-bin
            name: talos-bin
        securityContext:
          fsGroup: 1001
        serviceAccountName: actions-runner
        terminationGracePeriodSeconds: 30
        tolerations:
        - effect: NoSchedule
          key: node-role.kubernetes.io/control-plane
          operator: Exists
        volumes:
        - ephemeral:
            volumeClaimTemplate:
              spec:
                accessModes:
                - ReadWriteOnce
                resources:
                  requests:
                    storage: 20Gi
                storageClassName: ceph-block
          name: work
        - name: talos
          secret:
            secretName: actions-runner
        - emptyDir: {}
          name: talos-bin

---
# ===== HelmRelease: gha-rs-ac-ai-k8s-sandbox =====

---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  labels:
    app.kubernetes.io/name: gha-runner-scale-set
    kustomize.toolkit.fluxcd.io/name: gha-runner-scale-set
    kustomize.toolkit.fluxcd.io/namespace: actions-runner-system
  name: gha-rs-ac-ai-k8s-sandbox
  namespace: actions-runner-system
  annotations:
    config.kubernetes.io/index: '6'
    internal.config.kubernetes.io/index: '6'
spec:
  chart:
    spec:
      chart: gha-runner-scale-set
      sourceRef:
        kind: HelmRepository
        name: actions-runner-controller
        namespace: flux-system
      version: 0.14.2
  driftDetection:
    mode: enabled
  install:
    crds: CreateReplace
    remediation:
      retries: 3
    strategy:
      name: RetryOnFailure
  interval: 30m
  rollback:
    cleanupOnFail: true
    recreate: true
  upgrade:
    cleanupOnFail: true
    crds: CreateReplace
    remediation:
      remediateLastFailure: true
      retries: 2
    strategy:
      name: RemediateOnFailure
  values:
    annotations:
      secret.reloader.stakater.com/reload: aviator-coding-runner-secret
    controllerServiceAccount:
      name: gha-runner-scale-set-controller
      namespace: actions-runner-system
    githubConfigSecret: aviator-coding-runner-secret
    githubConfigUrl: https://github.com/aviator-coding/ai-k8s-sandbox
    listenerMetrics:
      counters:
        gha_completed_jobs_total:
          labels:
          - repository
          - organization
          - enterprise
          - job_name
          - event_name
          - job_result
        gha_started_jobs_total:
          labels:
          - repository
          - organization
          - enterprise
          - job_name
          - event_name
      gauges:
        gha_assigned_jobs:
          labels:
          - name
          - namespace
          - repository
          - organization
          - enterprise
        gha_busy_runners:
          labels:
          - name
          - namespace
          - repository
          - organization
          - enterprise
        gha_desired_runners:
          labels:
          - name
          - namespace
          - repository
          - organization
          - enterprise
        gha_idle_runners:
          labels:
          - name
          - namespace
          - repository
          - organization
          - enterprise
        gha_max_runners:
          labels:
          - name
          - namespace
          - repository
          - organization
          - enterprise
        gha_min_runners:
          labels:
          - name
          - namespace
          - repository
          - organization
          - enterprise
        gha_registered_runners:
          labels:
          - name
          - namespace
          - repository
          - organization
          - enterprise
        gha_running_jobs:
          labels:
          - name
          - namespace
          - repository
          - organization
          - enterprise
      histograms:
        gha_job_execution_duration_seconds:
          labels:
          - repository
          - organization
          - enterprise
          - job_name
          - event_name
          - job_result
        gha_job_startup_duration_seconds:
          labels:
          - repository
          - organization
          - enterprise
          - job_name
          - event_name
    listenerTemplate:
      spec:
        containers:
        - name: listener
          resources:
            limits:
              cpu: 200m
              memory: 256Mi
            requests:
              cpu: 50m
              memory: 64Mi
        priorityClassName: gha-runner-infrastructure
    maxRunners: 15
    minRunners: 1
    template:
      metadata:
        annotations:
          secret.reloader.stakater.com/reload: aviator-coding-runner-secret
      spec:
        containers:
        - command:
          - /home/runner/run.sh
          env:
          - name: ACTIONS_RUNNER_REQUIRE_JOB_CONTAINER
            value: "false"
          - name: ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION
            value: "true"
          - name: DOCKER_HOST
            value: tcp://localhost:2376
          - name: DOCKER_TLS_CERTDIR
            value: /certs
          - name: DOCKER_TLS_VERIFY
            value: "1"
          - name: DOCKER_CERT_PATH
            value: /certs/client
          - name: NODE_IP
            valueFrom:
              fieldRef:
                fieldPath: status.hostIP
          - name: NODE
            valueFrom:
              fieldRef:
                fieldPath: status.hostIP
          - name: TALOSCONFIG
            value: /var/run/secrets/talos.dev/talosconfig
          - name: ACTIONS_RUNNER_PRINT_LOG_TO_STDOUT
            value: "1"
          image: ghcr.io/home-operations/actions-runner:2.336.0@sha256:281a9a090522fafbf4967f158b8c97d03552b1978b688893c5f7cb1944bc5fe5
          name: runner
          resources:
            limits:
              cpu: "2"
              memory: 8Gi
            requests:
              cpu: 200m
              memory: 512Mi
          volumeMounts:
          - mountPath: /home/runner/_work
            name: work
          - mountPath: /var/run/secrets/talos.dev
            name: talos
            readOnly: true
          - mountPath: /usr/local/bin/talosctl
            name: talos-bin
            subPath: talosctl
          - mountPath: /certs
            name: docker-certs
            readOnly: true
        - env:
          - name: DOCKER_TLS_CERTDIR
            value: /certs
          image: docker:29-dind
          name: dind
          resources:
            limits:
              cpu: "2"
              memory: 4Gi
            requests:
              cpu: 100m
              memory: 256Mi
          securityContext:
            privileged: true
          volumeMounts:
          - mountPath: /home/runner/_work
            name: work
          - mountPath: /certs
            name: docker-certs
          - mountPath: /var/lib/docker
            name: dind-storage
        initContainers:
        - command:
          - cp
          - /usr/local/bin/talosctl
          - /talos-bin/talosctl
          image: ghcr.io/aviator-coding/talosctl-busybox:v1.13.3
          name: talosctl-installer
          volumeMounts:
          - mountPath: /talos-bin
            name: talos-bin
        securityContext:
          fsGroup: 1001
        serviceAccountName: actions-runner
        terminationGracePeriodSeconds: 30
        tolerations:
        - effect: NoSchedule
          key: node-role.kubernetes.io/control-plane
          operator: Exists
        volumes:
        - ephemeral:
            volumeClaimTemplate:
              spec:
                accessModes:
                - ReadWriteOnce
                resources:
                  requests:
                    storage: 20Gi
                storageClassName: ceph-block
          name: work
        - name: talos
          secret:
            secretName: actions-runner
        - emptyDir: {}
          name: talos-bin
        - emptyDir: {}
          name: docker-certs
        - emptyDir: {}
          name: dind-storage
Evidence: flux-local test results for the affected Kustomization

gha-runner-scale-set::actions-runner-system/gha-runner-scale-set-aviator-coding-home-ops PASSED gha-runner-scale-set::actions-runner-system/gha-rs-ac-ai-k8s-sandbox PASSED gha-runner-scale-set-controller::actions-runner-system/gha-runner-scale-set-controller PASSED 225 passed in 53.09s

Command: flux-local test --all-namespaces --enable-helm --path kubernetes/flux/cluster --verbose
(full cluster tree required so flux-local can resolve HelmRepository sources referenced by the affected HelmReleases)

7:kubernetes/flux/cluster::actions-runner-maintenance::kustomization PASSED [  0%]
9:kubernetes/flux/cluster::gha-runner-scale-set::actions-runner-system/gha-runner-scale-set-aviator-coding-home-ops PASSED [  1%]
10:kubernetes/flux/cluster::gha-runner-scale-set::actions-runner-system/gha-rs-ac-ai-k8s-sandbox PASSED [  1%]
12:kubernetes/flux/cluster::gha-runner-scale-set-controller::actions-runner-system/gha-runner-scale-set-controller PASSED [  2%]
233:============================= 225 passed in 53.09s =============================

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

✅ **Review** - passed

✅ No issues found.

✅ **Test** - passed

✅ No issues found.

  • kustomize build kubernetes/apps/actions-runner-system/gha-runner-scale-set/app/ - exits 0, both scale-sets' runner container image fields resolve to ghcr.io/home-operations/actions-runner:2.336.0@sha256:281a9a090522fafbf4967f158b8c97d03552b1978b688893c5f7cb1944bc5fe5
  • flux-local test --all-namespaces --enable-helm --path kubernetes/flux/cluster --verbose - 225/225 passed, including both gha-runner-scale-set HelmRelease test nodes for actions-runner-system (full cluster tree is required as the --path root so flux-local can resolve the HelmRepository sources the affected HelmReleases reference; a narrower --path fails with 'Unable to find HelmRepository')
  • flux-local build all --enable-helm --skip-secrets --skip-crds kubernetes/flux/cluster - fully Helm-inflated cluster manifest (1945 docs); confirmed the AutoscalingRunnerSet pod templates (the actual object ARC's controller reads to spawn runner pods) for gha-runner-scale-set-aviator-coding-home-ops and gha-rs-ac-ai-k8s-sandbox both reference the identical new base image/digest, and grepped the entire rendered output for the string 'actions-runner-buildx' - zero matches
  • repo-wide grep for 'actions-runner-buildx' and 'build-actions-runner-buildx' across yaml/yml/json/md - only remaining hit is the intentional historical explanation in kubernetes/apps/actions-runner-system/TROUBLESHOOTING.md; no leftover .renovate/ config or workflow references
  • manual diff review of the HelmRelease change against the sibling ai-k8s-sandbox scale-set entry in the same file - confirmed both use the exact same image tag@digest
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

… image

ghcr.io/aviator-coding/actions-runner-buildx was byte-identical to its base
ghcr.io/home-operations/actions-runner (same 12 layers, one empty layer
added by the build-time `docker buildx version` assertion), amd64-only
where the base is amd64+arm64, and its only capability is unusable in the
runner pod, which has no Docker daemon. Re-verified live: manifest digests
match layer-for-layer.

Point the home-ops ARC scale set back at the base image (same pin scheme
already used by the sibling ai-k8s-sandbox scale-set), delete the custom
build Dockerfile and workflow, and update docs that referenced them.
@mortyops

mortyops Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor
--- HelmRelease: actions-runner-system/gha-runner-scale-set-aviator-coding-home-ops AutoscalingRunnerSet: actions-runner-system/gha-runner-scale-set-aviator-coding-home-ops

+++ HelmRelease: actions-runner-system/gha-runner-scale-set-aviator-coding-home-ops AutoscalingRunnerSet: actions-runner-system/gha-runner-scale-set-aviator-coding-home-ops

@@ -11,13 +11,13 @@

     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/part-of: gha-rs
     actions.github.com/scale-set-name: gha-runner-scale-set-aviator-coding-home-ops
     actions.github.com/scale-set-namespace: actions-runner-system
   annotations:
     secret.reloader.stakater.com/reload: aviator-coding-runner-secret
-    actions.github.com/values-hash: f56f8e4610229ea767b9753f661d3742a19f76ab92eb9db7ce02650212f4ed9
+    actions.github.com/values-hash: be7fc68643c68f8a8f9b3f6657b57d41d8ef3623d31c30cf13c503456dad106
     actions.github.com/cleanup-manager-role-binding: gha-runner-scale-set-aviator-coding-home-ops-gha-rs-manager
     actions.github.com/cleanup-manager-role-name: gha-runner-scale-set-aviator-coding-home-ops-gha-rs-manager
 spec:
   githubConfigUrl: https://github.com/aviator-coding/home-ops
   githubConfigSecret: aviator-coding-runner-secret
   maxRunners: 15
@@ -149,13 +149,13 @@

         - mountPath: /talos-bin
           name: talos-bin
       containers:
       - name: runner
         command:
         - /home/runner/run.sh
-        image: ghcr.io/aviator-coding/actions-runner-buildx:2.336.0@sha256:6a185072e655f87c4fb1469963cc49c539ce557336b31c6e05d4208f1c83d4f5
+        image: ghcr.io/home-operations/actions-runner:2.336.0@sha256:281a9a090522fafbf4967f158b8c97d03552b1978b688893c5f7cb1944bc5fe5
         resources:
           limits:
             cpu: '2'
             memory: 8Gi
           requests:
             cpu: 200m

@mortyops

mortyops Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor
--- kubernetes/apps/actions-runner-system/gha-runner-scale-set/app Kustomization: actions-runner-system/gha-runner-scale-set HelmRelease: actions-runner-system/gha-runner-scale-set-aviator-coding-home-ops

+++ kubernetes/apps/actions-runner-system/gha-runner-scale-set/app Kustomization: actions-runner-system/gha-runner-scale-set HelmRelease: actions-runner-system/gha-runner-scale-set-aviator-coding-home-ops

@@ -169,13 +169,13 @@

               fieldRef:
                 fieldPath: status.hostIP
           - name: TALOSCONFIG
             value: /var/run/secrets/talos.dev/talosconfig
           - name: ACTIONS_RUNNER_PRINT_LOG_TO_STDOUT
             value: '1'
-          image: ghcr.io/aviator-coding/actions-runner-buildx:2.336.0@sha256:6a185072e655f87c4fb1469963cc49c539ce557336b31c6e05d4208f1c83d4f5
+          image: ghcr.io/home-operations/actions-runner:2.336.0@sha256:281a9a090522fafbf4967f158b8c97d03552b1978b688893c5f7cb1944bc5fe5
           name: runner
           resources:
             limits:
               cpu: '2'
               memory: 8Gi
             requests:

@Aviator-Coding
Aviator-Coding merged commit 12604cd into main Aug 22, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant