You've already forked ansible-role-gitea-runner
120 lines
27 KiB
Markdown
120 lines
27 KiB
Markdown
# gitea_runner
|
|
|
|
This Ansible role installs and configures a gitea Act Runner for executing GitHub Actions-compatible workflows.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
ansible-galaxy install volker-raschek.gitea_runner
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Simple Playbook
|
|
|
|
```yaml
|
|
- hosts: runners
|
|
become: yes
|
|
roles:
|
|
- role: volker-raschek.gitea_runner
|
|
vars:
|
|
gitea_runner_gitea_url: "https://your-gitea-instance.com"
|
|
gitea_runner_token: "your-registration-token"
|
|
```
|
|
|
|
### Advanced Configuration
|
|
|
|
```yaml
|
|
- hosts: runners
|
|
become: yes
|
|
roles:
|
|
- role: volker-raschek.gitea_runner
|
|
vars:
|
|
gitea_runner_gitea_url: "https://your-gitea-instance.com"
|
|
gitea_runner_token: "your-registration-token"
|
|
gitea_runner_config:
|
|
runner:
|
|
capacity: 2
|
|
labels:
|
|
- "ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"
|
|
- "custom-label:docker://custom-image:latest"
|
|
container:
|
|
privileged: true
|
|
```
|
|
|
|
## Further ansible roles
|
|
|
|
This ansible role is used in combination with other ansible roles of `volker-raschek`. You can search for the other
|
|
ansible roles via the following command.
|
|
|
|
```bash
|
|
$ ansible-galaxy role search --author "volker-raschek"
|
|
|
|
Found roles matching your search:
|
|
|
|
Name Description
|
|
---- -----------
|
|
volker-raschek.bind9 Role to install and configure bind9 on different distributions
|
|
volker-raschek.dhcpd Role to install and configure dhcpd on different distributions
|
|
volker-raschek.renovate Role to configure renovate as container image
|
|
...
|
|
```
|
|
|
|
## Parameters
|
|
|
|
### Act Runner
|
|
|
|
| Name | Description | Value |
|
|
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
| `gitea_runner_config_file` | Path to the gitea_runner configuration file | `/etc/gitea_runner/config.yaml` |
|
|
| `gitea_runner_config.log.level` | The level of logging, can be trace, debug, info, warn, error, fatal | `info` |
|
|
| `gitea_runner_config.runner.file` | Where to store the registration result | `.runner` |
|
|
| `gitea_runner_config.runner.capacity` | Execute how many tasks concurrently at the same time | `1` |
|
|
| `gitea_runner_config.runner.envs` | Extra environment variables to run jobs | `{}` |
|
|
| `gitea_runner_config.runner.env_file` | Extra environment variables to run jobs from a file | `.env` |
|
|
| `gitea_runner_config.runner.timeout` | The timeout for a job to be finished | `3h` |
|
|
| `gitea_runner_config.runner.shutdown_timeout` | The timeout for the runner to wait for running jobs to finish when shutting down | `0s` |
|
|
| `gitea_runner_config.runner.insecure` | Whether skip verifying the TLS certificate of the Gitea instance | `false` |
|
|
| `gitea_runner_config.runner.fetch_timeout` | The timeout for fetching the job from the Gitea instance | `5s` |
|
|
| `gitea_runner_config.runner.fetch_interval` | The interval for fetching the job from the Gitea instance | `2s` |
|
|
| `gitea_runner_config.runner.fetch_interval_max` | The maximum interval for fetching the job from the Gitea instance. | `5s` |
|
|
| `gitea_runner_config.runner.workdir_cleanup_age` | The maximum interval for fetching the job from the Gitea instance. | `24h` |
|
|
| `gitea_runner_config.runner.idle_cleanup_interval` | Cadence for the idle stale bind-workdir cleanup pass. | `10m` |
|
|
| `gitea_runner_config.runner.log_report_interval` | The base interval for periodic log flush to the Gitea instance. | `5s` |
|
|
| `gitea_runner_config.runner.log_report_max_latency` | The maximum time a log row can wait before being sent. | `3s` |
|
|
| `gitea_runner_config.runner.log_report_batch_size` | Flush logs immediately when the buffer reaches this many rows. | `100` |
|
|
| `gitea_runner_config.runner.state_report_interval` | The interval for reporting task state (step status, timing) to the Gitea instance. | `5s` |
|
|
| `gitea_runner_config.runner.github_mirror` | The mirror address of the github that pulls the action repository | `""` |
|
|
| `gitea_runner_config.runner.labels` | The labels of a runner are used to determine which jobs the runner can run | `["ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest","ubuntu-22.04:docker://docker.gitea.com/runner-images:ubuntu-22.04","ubuntu-20.04:docker://docker.gitea.com/runner-images:ubuntu-20.04"]` |
|
|
| `gitea_runner_config.runner.allocate_pty` | TODO | `false` |
|
|
| `gitea_runner_config.cache.enabled` | Enable cache server to use actions/cache | `true` |
|
|
| `gitea_runner_config.cache.dir` | The directory to store the cache data | `""` |
|
|
| `gitea_runner_config.cache.host` | The host of the cache server | `""` |
|
|
| `gitea_runner_config.cache.port` | The port of the cache server | `0` |
|
|
| `gitea_runner_config.cache.external_server` | The external cache server URL | `""` |
|
|
| `gitea_runner_config.cache.external_secret` | Shared secret between this runner and the external `gitea-runner cache-server`. | `""` |
|
|
| `gitea_runner_config.cache.offline_mode` | When true, reuse a cached action instead of fetching from the remote on every job. | `false` |
|
|
| `gitea_runner_config.container.network` | Specifies the network to which the container will connect | `""` |
|
|
| `gitea_runner_config.container.privileged` | Whether to use privileged mode when launching task containers | `false` |
|
|
| `gitea_runner_config.container.options` | Other options to be used when the container is started | `nil` |
|
|
| `gitea_runner_config.container.workdir_parent` | The parent directory of a job's working directory | `nil` |
|
|
| `gitea_runner_config.container.valid_volumes` | Volumes that can be mounted to containers | `[]` |
|
|
| `gitea_runner_config.container.docker_host` | Overrides the docker client host with the specified one | `""` |
|
|
| `gitea_runner_config.container.force_pull` | Pull docker image(s) even if already present | `true` |
|
|
| `gitea_runner_config.container.force_rebuild` | Rebuild docker image(s) even if already present | `false` |
|
|
| `gitea_runner_config.container.require_docker` | Always require a reachable docker daemon | `false` |
|
|
| `gitea_runner_config.container.docker_timeout` | Timeout to wait for the docker daemon to be reachable | `0s` |
|
|
| `gitea_runner_config.container.bind_workdir` | Bind the workspace to the host filesystem instead of using Docker volumes. This is required for Docker-in-Docker (DinD) setups when jobs use docker compose with bind mounts (e.g., ".:/app"), as volume-based workspaces are not accessible from the DinD daemon's filesystem. | `false` |
|
|
| `gitea_runner_config.host.workdir_parent` | The parent directory of a job's working directory | `nil` |
|
|
| `gitea_runner_config.metrics.enabled` | Enable exposing metrics at http://<addr>/metrics and a liveness check at /healthz. | `false` |
|
|
| `gitea_runner_config.metrics.addr` | The address for the metrics HTTP server. | `127.0.0.1:9101` |
|
|
| `gitea_runner_unix_extra_groups` | List of additional unix groups to append the executing gitea-runner user to. | `[]` |
|
|
| `gitea_runner_gitea_url` | The URL of the Gitea instance | `""` |
|
|
| `gitea_runner_token` | The registration token for the gitea_runner | `""` |
|
|
|
|
### Package Management
|
|
|
|
| Name | Description | Value |
|
|
| --------------------------- | ---------------------------------------------------------- | ------ |
|
|
| `gitea_runner_update_cache` | Whether to update package cache before installing packages | `true` |
|