With this patched GitLab Runner image, you can auto-scale your CI jobs on Hetzner Cloud. The patch installs the Hetzner Docker Machine driver and is available on Docker Hub.
You can follow the official GitLab docs for configuring the GitLab Runner with docker machine, just use this image as a drop in replacement for gitlab/gitlab-runner
.
See the example config.toml
and docker-compose.yaml
below for the hetzner specific docker machine options.
- Open
Dockerfile
, adjust the base version number. - Open
.github/workflows/docker-build.yml
and look for the previous version number occurences and replace by the new one. - Push on
master
, let Actions publish the image on Dockerhub.
Use this image instead of the gitlab/gitlab-runner
image and set MachineDriver
to hetzner
in your runner configuration.
Example config.toml
:
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "docker-machine"
url = "https://gitlab.com"
token = "your-token"
executor = "docker+machine"
[runners.docker]
tls_verify = false
image = "docker:latest"
privileged = true
disable_cache = false
volumes = ["/cache"]
shm_size = 536870912
[runners.cache]
[runners.machine]
IdleCount = 0
IdleTime = 1800
MaxBuilds = 10
MachineDriver = "hetzner"
MachineName = "runner-%s"
MachineOptions = [
"hetzner-api-token=hetzner-api-token",
"hetzner-image=ubuntu-18.04",
"hetzner-server-type=cx31",
]
Example docker-compose.yaml
:
version: "3.8"
services:
hetzner-runner:
image: mawalu/hetzner-gitlab-runner:latest
volumes:
- "./hetzner_config:/etc/gitlab-runner"
If you face docker problems at runtime (such as the one below), you can specify a Docker version in the MachineOptions
.
MachineOptions = [
"engine-install-url=https://releases.rancher.com/install-docker/19.03.9.sh",
]
Possible error that is caused by Docker:
ERROR: Error creating machine: Error running provisioning: Unable to verify the Docker daemon is listening: Maximum number of retries (10) exceeded driver=hetzner name=runner-xxx-xxx operation=create
See this issue for more information.
Currently this image is build using the gitlab/gitlab-runner:latest
image and the latest docker-machine hetzner plugin. If you need builds for another version feel free to open an PR.
MIT