apiVersion: apps/v1 kind: Deployment metadata: name: gitea-runner namespace: gitea labels: app: gitea-runner spec: replicas: 1 selector: matchLabels: app: gitea-runner template: metadata: labels: app: gitea-runner spec: serviceAccountName: gitea-runner containers: - name: runner image: gitea/act_runner:latest command: - sh - -c - | # Install kubectl wget -q -O /usr/local/bin/kubectl "https://dl.k8s.io/release/$(wget -q -O - https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl" chmod +x /usr/local/bin/kubectl # Wait for Gitea to be ready while ! wget -q --spider http://gitea-http.gitea.svc:3000/api/v1/version 2>/dev/null; do echo "Waiting for Gitea to be ready..." sleep 5 done echo "Gitea is ready!" # Register runner if not already registered if [ ! -f /data/.runner ]; then act_runner register --no-interactive \ --instance https://github0213.com \ --token $(cat /secrets/token) \ --name k3s-runner \ --labels k3s-home:host fi act_runner daemon env: - name: GITEA_INSTANCE_URL value: "https://github0213.com" volumeMounts: - name: runner-data mountPath: /data - name: runner-secret mountPath: /secrets readOnly: true resources: requests: cpu: 50m memory: 128Mi limits: memory: 512Mi volumes: - name: runner-data emptyDir: {} - name: runner-secret secret: secretName: gitea-runner-secret nodeSelector: node-role.kubernetes.io/control-plane: "true" tolerations: - key: node-role.kubernetes.io/control-plane operator: Exists effect: NoSchedule