# Example configuration file, it's safe to copy this as the default config file without any modification. # You don't have to copy this file to your instance, # just run `forgejo-runner generate-config > config.yaml` to generate a config file. log: # The level of logging, can be trace, debug, info, warn, error, fatal level: {{ forgejoRunner_config_log_level }} # The level of logging for jobs, can be trace, debug, info, earn, error, fatal job_level: {{ forgejoRunner_config_log_job_level }} runner: # Where to store the registration result. file: {{ forgejoRunner_config_runner_file }} # Execute how many tasks concurrently at the same time. capacity: {{ forgejoRunner_config_runner_capacity }} # Extra environment variables to run jobs. envs: {% for item in forgejoRunner_config_runner_envs %} {{ item }} {% endfor %} # Extra environment variables to run jobs from a file. # It will be ignored if it's empty or the file doesn't exist. env_file: {{ forgejoRunner_config_runner_env_file }} # 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. timeout: {{ forgejoRunner_config_runner_timeout }} # The timeout for the runner to wait for running jobs to finish when # shutting down because a TERM or INT signal has been received. Any # running jobs that haven't finished after this timeout will be # cancelled. # If unset or zero the jobs will be cancelled immediately. shutdown_timeout: {{ forgejoRunner_config_runner_shutdown_timeout }} # Whether skip verifying the TLS certificate of the instance. insecure: {{ forgejoRunner_config_runner_insecure }} # The timeout for fetching the job from the Forgejo instance. fetch_timeout: {{ forgejoRunner_config_runner_fetch_timeout }} # The interval for fetching the job from the Forgejo instance. fetch_interval: {{ forgejoRunner_config_runner_fetch_interval }} # The interval for reporting the job status and logs to the Forgejo instance. report_interval: {{ forgejoRunner_config_runner_report_interval }} # 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:20-bookworm", "ubuntu-22.04:docker://node:20-bookworm"] # If it's empty when registering, it will ask for inputting labels. # If it's empty when executing the `daemon`, it will use labels in the `.runner` file. labels: {{ forgejoRunner_config_runner_labels }} cache: # Enable cache server to use actions/cache. enabled: {{ forgejoRunner_config_cache_enabled }} # The directory to store the cache data. # If it's empty, the cache data will be stored in $HOME/.cache/actcache. dir: "{{ forgejoRunner_config_cache_dir }}" # 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. host: "{{ forgejoRunner_config_cache_host }}" # The port of the cache server. # 0 means to use a random available port. port: 0 # The external cache server URL. Valid only when enable is true. # If it's specified, it will be used to set the ACTIONS_CACHE_URL environment variable. The URL should generally end with "/". # Otherwise it will be set to the the URL of the internal cache server. external_server: "{{ forgejoRunner_config_cache_external_server }}" container: # 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. network: "{{ forgejoRunner_config_container_network }}" # Whether to create networks with IPv6 enabled. Requires the Docker daemon to be set up accordingly. # Only takes effect if "network" is set to "". enable_ipv6: false # Whether to use privileged mode or not when launching task containers (privileged mode is required for Docker-in-Docker). privileged: {{ forgejoRunner_config_container_privileged }} # And other options to be used when the container is started (eg, --add-host=my.forgejo.url:host-gateway). options: {{ forgejoRunner_config_container_options }} # The parent directory of a job's working directory. # If it's empty, /workspace will be used. workdir_parent: {% for item in forgejoRunner_config_container_workdir_parent %} {{ item }} {% endfor %} # 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: # - '**' valid_volumes: {{ forgejoRunner_config_container_valid_volumes }} # 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. docker_host: "{{ forgejoRunner_config_container_docker_host }}" # Pull docker image(s) even if already present force_pull: {{ forgejoRunner_config_container_force_pull }} host: # The parent directory of a job's working directory. # If it's empty, $HOME/.cache/act/ will be used. workdir_parent: {{ forgejoRunner_config_host_workdir_parent }}