# yaml-language-server: $schema=https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.29.4/statefulset.json
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: forgejo-runner
  namespace: dev
spec:
  serviceName: forgejo-runner
  replicas: 5
  revisionHistoryLimit: 0

  volumeClaimTemplates:
    - metadata:
        name: runner-work
      spec:
        storageClassName: mainpool-hostpath
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 5Gi
  
  persistentVolumeClaimRetentionPolicy:
    whenScaled: Delete
    whenDeleted: Delete

  selector:
    matchLabels:
      app: forgejo-runner

  template:
    metadata:
      labels:
        app: forgejo-runner

    spec:
      serviceAccountName: forgejo-runner

      containers:
        - name: runner
          image: ghcr.io/christopherhx/gitea-actions-runner:v0.0.13
          imagePullPolicy: Always
          
          env:
            - name: ACTIONS_RUNNER_POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: ACTIONS_RUNNER_CLAIM_NAME
              value: runner-work-$(ACTIONS_RUNNER_POD_NAME)
            - name: ACTIONS_RUNNER_REQUIRE_JOB_CONTAINER
              value: "true"
            - name: ACTIONS_RUNNER_CONTAINER_HOOKS
              value: /home/runner/k8s/index.js
            - name: GITEA_INSTANCE_URL
              value: https://git.${SECRET_NEW_DOMAIN}
            - name: GITEA_RUNNER_REGISTRATION_TOKEN
              valueFrom:
                secretKeyRef:
                  name: forgejo-runner-token
                  key: token
            - name: GITEA_RUNNER_LABELS
              value: docker,cluster
            - name: GITEA_RUNNER_NAME
              value: cluster-$(ACTIONS_RUNNER_POD_NAME)
          
          volumeMounts:
            - mountPath: /home/runner/_work
              name: runner-work

          resources:
            requests:
              cpu: "10m"
              memory: "500Mi"
            limits:
              cpu: "1"
              memory: "1Gi"