# act_runner's own configuration, mounted into the container as # /config/config.yaml. See docker-compose.ci.yml and docs/gitea-runner.md. log: level: info runner: # Two jobs at a time. The test workflow has four, so a push runs them in two # waves on an 8-core box — raise it if the box is idle anyway. capacity: 2 timeout: 1h shutdown_timeout: 3h insecure: false fetch_timeout: 5s fetch_interval: 2s # Deliberately empty: the labels come from GITEA_RUNNER_LABELS at registration # and live in .runner afterwards. Setting them in both places is how they end # up disagreeing. labels: [] cache: # What makes `actions/cache@v4` work — the Android SDK download and the gradle # caches are most of the APK job's wall clock. The server is run by the runner # itself, inside the container, and reached by job containers over the shared # `gitea-runner` network, so there is no port to publish or firewall. enabled: true dir: "" host: "" port: 0 container: # The same network the runner is on. Not `bridge`: on the default bridge the # job containers cannot reach the runner's cache server. network: gitea-runner privileged: false options: workdir_parent: workspace # Mount the host's docker socket into job containers that ask for docker, so # `docker.yml` can build and push. `valid_volumes` is the allow-list that # makes any such mount legal at all. docker_host: automount valid_volumes: - /var/run/docker.sock force_pull: false force_rebuild: false host: # Only used by `:host` labels, which this runner deliberately does not offer. workdir_parent: /tmp/act_runner