forgejo-runner

forgejo-runner

forgejo-runner

Version: 0.4.1 Type: application AppVersion: 5.0.1

Deploy runner for an forgejo instance (default codeberg.org)

Maintainers

NameEmailUrl
WrenIXhttps://wrenix.eu
⚠️
Me, wrenix, switch to woodpecker and maybe does not test every change.

Accessing docker socket inside job containers

To access the docker socket inside the job containers, the following example values may be used (see values-dind-bypass.yaml):

values.yaml
runner:
  config:
    create: true
    existingSecret: ""
    file:
      log:
        level: "info"
      runner:
        file: ".runner"
        capacity: 1
        envs:
          A_TEST_ENV_NAME_1: null
          A_TEST_ENV_NAME_2: null
          DOCKER_HOST: tcp://127.0.0.1:2376
          DOCKER_TLS_VERIFY: 1
          DOCKER_CERT_PATH: /certs/client
      container:
        network: host
        enable_ipv6: false
        privileged: false
        options: -v /certs/client:/certs/client
        valid_volumes:
          - /certs/client

Usage

Helm must be installed and setup to your kubernetes cluster to use the charts. Refer to Helm’s documentation to get started. Once Helm has been set up correctly, fetch the charts as follows:

helm pull oci://codeberg.org/wrenix/helm-charts/forgejo-runner

You can install a chart release using the following command:

helm install forgejo-runner-release oci://codeberg.org/wrenix/helm-charts/forgejo-runner --values values.yaml

To uninstall a chart release use helm’s delete command:

helm uninstall forgejo-runner-release

Values

Configuration yaml of runner (see: https://code.forgejo.org/forgejo/runner/src/branch/main/internal/pkg/config/config.example.yaml)

KeyTypeDefaultDescription
runner.config.file.cache.dirstring""The directory to store the cache data. If it’s empty, the cache data will be stored in $HOME/.cache/actcache.
runner.config.file.cache.enabledbooltrueEnable cache server to use actions/cache.
runner.config.file.cache.external_serverstring""The external cache server URL. Valid only when enable is true. If it’s specified, act_runner will use this URL as the ACTIONS_CACHE_URL rather than start a server by itself. The URL should generally end with “/”.
runner.config.file.cache.hoststring""The host of the cache server. It’s not for the address to listen, but the address to connect from job containers. So 0.0.0.0 is a bad choice, leave it empty to detect automatically.
runner.config.file.cache.portint0The port of the cache server. 0 means to use a random available port.
runner.config.file.container.docker_hoststring"-"overrides the docker client host with the specified one. If “-”, an available docker host will automatically be found. If empty, an available docker host will automatically be found and mounted in the job container (e.g. /var/run/docker.sock). Otherwise the specified docker host will be used and an error will be returned if it doesn’t work.
runner.config.file.container.enable_ipv6boolfalseWhether to create networks with IPv6 enabled. Requires the Docker daemon to be set up accordingly. Only takes effect if “network” is set to “”.
runner.config.file.container.force_pullboolfalsePull docker image(s) even if already present
runner.config.file.container.networkstring""Specifies the network to which the container will connect. Could be host, bridge or the name of a custom network. If it’s empty, create a network automatically.
runner.config.file.container.optionsstringnilAnd other options to be used when the container is started (eg, --add-host=my.forgejo.url:host-gateway).
runner.config.file.container.privilegedboolfalseAnd other options to be used when the container is started (eg, --add-host=my.forgejo.url:host-gateway).
runner.config.file.container.valid_volumeslist[]Volumes (including bind mounts) can be mounted to containers. Glob syntax is supported, see https://github.com/gobwas/glob You can specify multiple volumes. If the sequence is empty, no volumes can be mounted. For example, if you only allow containers to mount the data volume and all the json files in /src, you should change the config to: valid_volumes: - data - /src/*.json If you want to allow any volume, please use the following configuration: valid_volumes: - ‘**’
runner.config.file.container.workdir_parentstringnilThe parent directory of a job’s working directory. If it’s empty, /workspace will be used.
runner.config.file.host.workdir_parentstringnilThe parent directory of a job’s working directory. If it’s empty, $HOME/.cache/act/ will be used.
runner.config.file.log.job_levelstring"info"The level of logging for jobs, can be trace, debug, info, earn, error, fatal
runner.config.file.log.levelstring"info"The level of logging, can be trace, debug, info, warn, error, fatal
runner.config.file.runner.capacityint1Execute how many tasks concurrently at the same time.
runner.config.file.runner.env_filestring".env"Extra environment variables to run jobs from a file. It will be ignored if it’s empty or the file doesn’t exist.
runner.config.file.runner.envsobject{"A_TEST_ENV_NAME_1":"a_test_env_value_1","A_TEST_ENV_NAME_2":"a_test_env_value_2"}Extra environment variables to run jobs.
runner.config.file.runner.fetch_intervalstring"2s"The interval for fetching the job from the Forgejo instance.
runner.config.file.runner.fetch_timeoutstring"5s"The timeout for fetching the job from the Forgejo instance.
runner.config.file.runner.filestring".runner"Runner config which contains id and token of this runner (autogenerate with create)
runner.config.file.runner.insecureboolfalseWhether skip verifying the TLS certificate of the Forgejo instance.
runner.config.file.runner.labelslist[]The labels of a runner are used to determine which jobs the runner can run, and how to run them. Like: [“macos-arm64:host”, “ubuntu-latest:docker://node:16-bullseye”, “ubuntu-22.04:docker://node:16-bullseye”] If it’s empty when registering, it will ask for inputting labels. If it’s empty when execute deamon, will use labels in .runner file.
runner.config.file.runner.timeoutstring"3h"The timeout for a job to be finished. Please note that the Forgejo instance also has a timeout (3h by default) for the job. So the job could be stopped by the Forgejo instance if it’s timeout is shorter than this.

Other Values

KeyTypeDefaultDescription
affinityobject{}
autoscaling.behaviorobject{}behavior of HPA Example: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Pods value: 1 periodSeconds: 60 scaleUp: stabilizationWindowSeconds: 0 policies: - type: Pods value: 1 periodSeconds: 60
autoscaling.enabledboolfalse
autoscaling.maxReplicasint100
autoscaling.minReplicasint1
autoscaling.targetCPUUtilizationPercentageint80
dind.image.pullPolicystring"IfNotPresent"
dind.image.registrystring"docker.io"
dind.image.repositorystring"library/docker"
dind.image.tagstring"27.3.1-dind"
extraEnvVarslist[]Additional environment variables to be set on runner container Example: extraEnvVars: - name: FOO value: “bar”
fullnameOverridestring""
image.pullPolicystring"IfNotPresent"
image.registrystring"code.forgejo.org"
image.repositorystring"forgejo/runner"
image.tagstring""
imagePullSecretslist[]
kubectl.image.pullPolicystring"IfNotPresent"
kubectl.image.registrystring"docker.io"
kubectl.image.repositorystring"bitnami/kubectl"
kubectl.image.tagstring"1.31.2"
nameOverridestring""
nodeSelectorobject{}
podAnnotationsobject{}
podLabelsobject{}
podSecurityContextobject{}
replicaCountint1
resourcesobject{}
runner.config.createbooltrue
runner.config.existingSecretstring""use existingSecret instatt
runner.config.instancestring"https://codeberg.org"
runner.config.namestringnil
runner.config.tokenstringnil
securityContext.privilegedbooltrue
serviceAccount.annotationsobject{}
serviceAccount.automountbooltrue
serviceAccount.createbooltrue
serviceAccount.namestring""
tolerationslist[]
volumeMountslist[]
volumeslist[]

Autogenerated from chart metadata using helm-docs