Skip to content

Mint System Forgejo Runner

Setup a Forgejo runner to run actions.

Secrets

To register the runner set up a forgejo-runner secret with the token.

FORGEJO_INSTANCE_TOKEN="*******"
kubectl create secret generic forgejo-runner \
    --from-literal=forgejoInstanceToken="$FORGEJO_INSTANCE_TOKEN" \
    -n <namespace>

Integration

Forgejo Buildx action

This role also provides a service account to access the Kubernetes cluster. With Buildx you can use the cluster as build enviroment. Export the kubeconfig to provide it in the Forgejo action with this command:

task generate-kubconfig buildx
name=buildx-sa-token
server=$(kubectl config view --minify --output 'jsonpath={.clusters[0].cluster.server}')
ca=$(kubectl get secret/$name -o jsonpath='{.data.ca\.crt}')
token=$(kubectl get secret/$name -o jsonpath='{.data.token}' | base64 --decode)
namespace=$(kubectl get secret/$name -o jsonpath='{.data.namespace}' | base64 --decode)

echo "
apiVersion: v1
kind: Config
clusters:
- name: default-cluster
  cluster:
    certificate-authority-data: ${ca}
    server: ${server}
contexts:
- name: default-context
  context:
    cluster: default-cluster
    namespace: default
    user: default-user
current-context: default-context
users:
- name: default-user
  user:
    token: ${token}
" > buildx.kubeconfig

Setup secret KUBECONFIG_BUILDX with content of the created kubeconfig.

Here is are examples of Forgejo action steps:

      - name: Create Kubeconfig for Buildx
        run: |
          mkdir -p $HOME/.kube
          echo "${{ secrets.KUBECONFIG_BUILDX }}" > $HOME/.kube/config

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
        with:
          driver: kubernetes
          driver-opts: |
            namespace=codeberg

Parameters

Forgejo Runner parameters

Name Description Value
image The image for Forgejo Runner code.forgejo.org/forgejo/runner:9
imagePullPolicy Pull policy for Forgejo Runner image Always
forgejoInstanceUrl Forgejo instance url. https://codeberg.org
secretRef The secret reference for the Forgejo Runner forgejo-runner
storageClassName Set the storage class ""

Resources requests and limits

Name Description Value
resources.requests.memory Memory request for the container 500Mi
resources.requests.cpu CPU request for the container 100m
resources.limits.memory Memory limit for the container 1Gi