actions / actions/actions-runner-controller

Unabled to download Buildx from Github Releases

Open
#3,386 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug community needs triage
Dominant language
Go
Stars
6.5k
Forks
1.5k
Avg merge
2d 2h
Merged PRs (30d)
27

Description

Checks
Controller Version

0.27.5

Deployment Method

Helm

Checks
  • This isn't a question or user support case (For Q&A and community support, go to Discussions).
  • I've read the Changelog before submitting this issue and I'm sure it's not due to any recently-introduced backward-incompatible changes
To Reproduce
1. Create a workflow that used `docker/build-and-push@v5.1.0` 
2. Run workflow
Describe the bug

Docker setup gets stuck at the step builderx from GitHub Releases. Work does not fail it times out in 2 hours.

Describe the expected behavior

buildx is installed and action progress to next step.

Additional Context
## Docker Image

FROM summerwind/actions-runner:v2.311.0-ubuntu-22.04

# Install dependencies
RUN sudo apt-get update && \
    sudo apt-get install -y \
    build-essential \
    libpq-dev \
    moreutils

## Deployment Yaml

kind: Deployment
apiVersion: apps/v1
metadata:
  annotations:
    deployment.kubernetes.io/revision: '15'
    meta.helm.sh/release-name: actions-runner-controller
    meta.helm.sh/release-namespace: actions-runner-system
  resourceVersion: '914557817'
  name: actions-runner-controller
  uid: 71bd6e40-e7f7-451c-893e-a3372eb285c4
  creationTimestamp: '2023-10-26T10:38:09Z'
  generation: 21
  managedFields:
    - manager: helm
      operation: Update
      apiVersion: apps/v1
      time: '2023-10-26T10:45:07Z'
      fieldsType: FieldsV1
      fieldsV1:
        'f:metadata':
          'f:annotations':
            .: {}
            'f:meta.helm.sh/release-name': {}
            'f:meta.helm.sh/release-namespace': {}
          'f:labels':
            .: {}
            'f:app.kubernetes.io/instance': {}
            'f:app.kubernetes.io/managed-by': {}
            'f:app.kubernetes.io/name': {}
            'f:app.kubernetes.io/version': {}
            'f:helm.sh/chart': {}
        'f:spec':
          'f:progressDeadlineSeconds': {}
          'f:revisionHistoryLimit': {}
          'f:selector': {}
          'f:strategy':
            'f:rollingUpdate':
              .: {}
              'f:maxSurge': {}
              'f:maxUnavailable': {}
            'f:type': {}
          'f:template':
            'f:metadata':
              'f:labels':
                .: {}
                'f:app.kubernetes.io/instance': {}
                'f:app.kubernetes.io/name': {}
            'f:spec':
              'f:volumes':
                .: {}
                'k:{"name":"cert"}':
                  .: {}
                  'f:name': {}
                  'f:secret':
                    .: {}
                    'f:defaultMode': {}
                    'f:secretName': {}
                'k:{"name":"secret"}':
                  .: {}
                  'f:name': {}
                  'f:secret':
                    .: {}
                    'f:defaultMode': {}
                    'f:secretName': {}
                'k:{"name":"tmp"}':
                  .: {}
                  'f:emptyDir': {}
                  'f:name': {}
              'f:containers':
                'k:{"name":"kube-rbac-proxy"}':
                  'f:image': {}
                  'f:terminationMessagePolicy': {}
                  .: {}
                  'f:resources':
                    .: {}
                    'f:limits':
                      .: {}
                      'f:memory': {}
                    'f:requests':
                      .: {}
                      'f:memory': {}
                  'f:args': {}
                  'f:securityContext': {}
                  'f:terminationMessagePath': {}
                  'f:imagePullPolicy': {}
                  'f:ports':
                    .: {}
                    'k:{"containerPort":8443,"protocol":"TCP"}':
                      .: {}
                      'f:containerPort': {}
                      'f:name': {}
                      'f:protocol': {}
                  'f:name': {}
                'k:{"name":"manager"}':
                  'f:image': {}
                  'f:volumeMounts':
                    .: {}
                    'k:{"mountPath":"/etc/actions-runner-controller"}':
                      .: {}
                      'f:mountPath': {}
                      'f:name': {}
                      'f:readOnly': {}
                    'k:{"mountPath":"/tmp"}':
                      .: {}
                      'f:mountPath': {}
                      'f:name': {}
                    'k:{"mountPath":"/tmp/k8s-webhook-server/serving-certs"}':
                      .: {}
                      'f:mountPath': {}
                      'f:name': {}
                      'f:readOnly': {}
                  'f:terminationMessagePolicy': {}
                  .: {}
                  'f:resources':
                    .: {}
                    'f:limits':
                      .: {}
                      'f:memory': {}
                    'f:requests':
                      .: {}
                      'f:memory': {}
                  'f:command': {}
                  'f:env':
                    .: {}
                    'k:{"name":"GITHUB_APP_ID"}':
                      .: {}
                      'f:name': {}
                      'f:valueFrom':
                        .: {}
                        'f:secretKeyRef': {}
                    'k:{"name":"GITHUB_APP_INSTALLATION_ID"}':
                      .: {}
                      'f:name': {}
                      'f:valueFrom':
                        .: {}
                        'f:secretKeyRef': {}
                    'k:{"name":"GITHUB_APP_PRIVATE_KEY"}':
                      .: {}
                      'f:name': {}
                      'f:valueFrom':
                        .: {}
                        'f:secretKeyRef': {}
                    'k:{"name":"GITHUB_BASICAUTH_PASSWORD"}':
                      .: {}
                      'f:name': {}
                      'f:valueFrom':
                        .: {}
                        'f:secretKeyRef': {}
                    'k:{"name":"GITHUB_TOKEN"}':
                      .: {}
                      'f:name': {}
                      'f:valueFrom':
                        .: {}
                        'f:secretKeyRef': {}
                  'f:securityContext': {}
                  'f:terminationMessagePath': {}
                  'f:imagePullPolicy': {}
                  'f:ports':
                    .: {}
                    'k:{"containerPort":9443,"protocol":"TCP"}':
                      .: {}
                      'f:containerPort': {}
                      'f:name': {}
                      'f:protocol': {}
                  'f:name': {}
              'f:dnsPolicy': {}
              'f:serviceAccount': {}
              'f:restartPolicy': {}
              'f:schedulerName': {}
              'f:terminationGracePeriodSeconds': {}
              'f:serviceAccountName': {}
              'f:securityContext': {}
    - manager: Mozilla
      operation: Update
      apiVersion: apps/v1
      time: '2024-02-07T17:43:52Z'
      fieldsType: FieldsV1
      fieldsV1:
        'f:spec':
          'f:template':
            'f:spec':
              'f:containers':
                'k:{"name":"manager"}':
                  'f:args': {}
    - manager: kube-controller-manager
      operation: Update
      apiVersion: apps/v1
      time: '2024-03-07T11:39:34Z'
      fieldsType: FieldsV1
      fieldsV1:
        'f:metadata':
          'f:annotations':
            'f:deployment.kubernetes.io/revision': {}
        'f:status':
          'f:availableReplicas': {}
          'f:conditions':
            .: {}
            'k:{"type":"Available"}':
              .: {}
              'f:lastTransitionTime': {}
              'f:lastUpdateTime': {}
              'f:message': {}
              'f:reason': {}
              'f:status': {}
              'f:type': {}
            'k:{"type":"Progressing"}':
              .: {}
              'f:lastTransitionTime': {}
              'f:lastUpdateTime': {}
              'f:message': {}
              'f:reason': {}
              'f:status': {}
              'f:type': {}
          'f:observedGeneration': {}
          'f:readyReplicas': {}
          'f:replicas': {}
          'f:updatedReplicas': {}
      subresource: status
  namespace: actions-runner-system
  labels:
    app.kubernetes.io/instance: actions-runner-controller
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: actions-runner-controller
    app.kubernetes.io/version: 0.27.5
    helm.sh/chart: actions-runner-controller-0.23.5
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/instance: actions-runner-controller
      app.kubernetes.io/name: actions-runner-controller
  template:
    metadata:
      creationTimestamp: null
      labels:
        app.kubernetes.io/instance: actions-runner-controller
        app.kubernetes.io/name: actions-runner-controller
    spec:
      restartPolicy: Always
      serviceAccountName: actions-runner-controller
      schedulerName: default-scheduler
      terminationGracePeriodSeconds: 10
      securityContext: {}
      containers:
        - resources:
            limits:
              memory: 256Mi
            requests:
              memory: 256Mi
          terminationMessagePath: /dev/termination-log
          name: manager
          command:
            - /manager
          env:
            - name: GITHUB_TOKEN
              valueFrom:
                secretKeyRef:
                  name: controller-manager
                  key: github_token
                  optional: true
            - name: GITHUB_APP_ID
              valueFrom:
                secretKeyRef:
                  name: controller-manager
                  key: github_app_id
                  optional: true
            - name: GITHUB_APP_INSTALLATION_ID
              valueFrom:
                secretKeyRef:
                  name: controller-manager
                  key: github_app_installation_id
                  optional: true
            - name: GITHUB_APP_PRIVATE_KEY
              valueFrom:
                secretKeyRef:
                  name: controller-manager
                  key: github_app_private_key
                  optional: true
            - name: GITHUB_BASICAUTH_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: controller-manager
                  key: github_basicauth_password
                  optional: true
          securityContext: {}
          ports:
            - name: webhook-server
              containerPort: 9443
              protocol: TCP
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - name: secret
              readOnly: true
              mountPath: /etc/actions-runner-controller
            - name: tmp
              mountPath: /tmp
            - name: cert
              readOnly: true
              mountPath: /tmp/k8s-webhook-server/serving-certs
          terminationMessagePolicy: File
          image: 'summerwind/actions-runner-controller:v0.27.5'
          args:
            - '--metrics-addr=127.0.0.1:8080'
            - '--enable-leader-election'
            - '--port=9443'
            - '--sync-period=1m'
            - '--default-scale-down-delay=10m'
            - '--docker-image=docker:dind'
            - >-
              --runner-image=PRIVATE_IMAGE_URL
            - '--runner-image-pull-secret=reg'
            - '--log-format=text'
        - resources:
            limits:
              memory: 256Mi
            requests:
              memory: 256Mi
          terminationMessagePath: /dev/termination-log
          name: kube-rbac-proxy
          securityContext: {}
          ports:
            - name: metrics-port
              containerPort: 8443
              protocol: TCP
          imagePullPolicy: IfNotPresent
          terminationMessagePolicy: File
          image: 'quay.io/brancz/kube-rbac-proxy:v0.13.1'
          args:
            - '--secure-listen-address=0.0.0.0:8443'
            - '--upstream=http://127.0.0.1:8080/'
            - '--logtostderr=true'
            - '--v=10'
      serviceAccount: actions-runner-controller
      volumes:
        - name: secret
          secret:
            secretName: controller-manager
            defaultMode: 420
        - name: cert
          secret:
            secretName: actions-runner-controller-serving-cert
            defaultMode: 420
        - name: tmp
          emptyDir: {}
      dnsPolicy: ClusterFirst
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600
status:
  observedGeneration: 21
  replicas: 1
  updatedReplicas: 1
  readyReplicas: 1
  availableReplicas: 1
  conditions:
    - type: Progressing
      status: 'True'
      lastUpdateTime: '2024-02-08T16:30:38Z'
      lastTransitionTime: '2023-10-26T10:38:09Z'
      reason: NewReplicaSetAvailable
      message: >-
        ReplicaSet "actions-runner-controller-766f668c77" has successfully
        progressed.
    - type: Available
      status: 'True'
      lastUpdateTime: '2024-03-07T11:39:34Z'
      lastTransitionTime: '2024-03-07T11:39:34Z'
      reason: MinimumReplicasAvailable
      message: Deployment has minimum availability.
Controller Logs
https://gist.github.com/Lewis-Globacap/f6bf04f9640588e301fa13647e64221c
Runner Pod Logs
https://gist.github.com/Lewis-Globacap/b433209f3fe8ebe71732983c8c858947

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the workflow using docker/build-and-push@v5.1.0 on the described self-hosted runner image and Helm deployment. Inspect the buildx installation step and its surrounding runner or controller configuration to identify why downloading from GitHub Releases hangs. Done means buildx installs successfully and the workflow advances past that step.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, github-actions, helm, kubernetes
Domain
ci-cd, devops, infrastructure
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.