# Gitea Actions runner on the ai node. Jobs run as containers in the host's Docker # (virtualisation.docker in hosts/ai of the nix repo) through the mounted socket. # `replicas` is not set (see deployment.yaml): scale it with kubectl when needed. apiVersion: v1 kind: ConfigMap metadata: name: gitea-runner-config data: config.yaml: | runner: capacity: 8 # jobs in parallel; the ai node has 32 threads and 124 GiB --- apiVersion: apps/v1 kind: Deployment metadata: name: gitea-runner labels: app: gitea-runner annotations: reloader.stakater.com/auto: "true" spec: selector: matchLabels: app: gitea-runner strategy: type: Recreate template: metadata: labels: app: gitea-runner spec: serviceAccountName: gitea-runner dnsConfig: options: - name: ndots value: "2" nodeSelector: workload/ai: "true" tolerations: - key: workload operator: Equal value: ai effect: NoSchedule volumes: - name: docker-sock hostPath: path: /var/run/docker.sock type: Socket - name: runner-data emptyDir: sizeLimit: 30Gi - name: config configMap: name: gitea-runner-config containers: - name: gitea-runner image: gitea/act_runner:nightly volumeMounts: - name: docker-sock mountPath: /var/run/docker.sock - name: runner-data mountPath: /data - name: config mountPath: /config.yaml subPath: config.yaml env: - name: CONFIG_FILE value: /config.yaml - name: GITEA_INSTANCE_URL # Job containers run outside the cluster network, so they need the public URL. value: https://gt.hexor.cy - name: GITEA_RUNNER_REGISTRATION_TOKEN valueFrom: secretKeyRef: name: gitea-runner-act-runner-secrets key: token - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: GITEA_RUNNER_NAME value: $(NODE_NAME) - name: GITEA_RUNNER_LABELS value: ubuntu-latest:docker://ghcr.io/catthehacker/ubuntu:act-latest,ubuntu-22.04:docker://ghcr.io/catthehacker/ubuntu:act-22.04,ubuntu-20.04:docker://ghcr.io/catthehacker/ubuntu:act-20.04