Я бы хотел, чтобы у меня всегда был 1 Idle Runner, который будет кэшировать образы докеров, чтобы когда другие бегуны выбирали изображения
будет зеркально отражен от свободного бегуна к новым бегунам и не загружен из https://hub.docker.com
У меня есть следующая конфигурация gitlab runner
concurrent = 10
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "Builds coordinator"
url = "https://gitlab.com/"
token = "<token>"
executor = "docker+machine"
limit = 10
[runners.docker]
tls_verify = false
image = "alpine:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.machine]
IdleCount = 1
IdleTime = 0
OffPeakPeriods = [
"* * 0-10,18-23 * * mon-fri *",
"* * * * * sat,sun *"
]
OffPeakTimezone = "Europe/Minsk"
OffPeakIdleCount = 0
OffPeakIdleTime = 0
MachineDriver = "digitalocean"
MachineName = "gitlab-runner-autoscale-%s"
MachineOptions = [
"digitalocean-image=coreos-stable",
"digitalocean-ssh-user=core",
"digitalocean-access-token=<token>",
"digitalocean-region=lon1",
"digitalocean-size=4gb",
"digitalocean-private-networking"
]
[runners.cache]
Type = "s3"
Path = "cache_for_builds"
Shared = false
[runners.cache.s3]
ServerAddress = "ams3.digitaloceanspaces.com"
AccessKey = "<key>"
SecretKey = "<secret>"
BucketName = "cache-for-builds"
BucketLocation = "ams3"
Insecure = false
Когда я запускаю новый конвейер, который имеет 10 заданий, новые бегуны создаются один за другим. Сначала незанятый бегун выбирает первое задание, затем через 10 секунд создается новый незанятый бегун, он выбирает второе задание и так далее. Это очень медленно
Я ожидаю, что когда появится 10 новых заданий, координатор должен проверить, есть ли 1 бегун. Он должен создать 10 новых бегунов для обработки заданий и создать 1 бездействующего бегуна. В моем случае это не должно создавать бездействующего бегуна, потому что лимит бегуна на токен составляет 10
gitlab-runner --version
дает мне
Version: 11.5.1
Git revision: 7f00c780
Git branch: 11-5-stable
GO version: go1.8.7
Built: 2018-12-06T13:25:34+0000
OS/Arch: linux/amd64
Пока что я решил эту проблему, имея 10 свободных бегунов, но я не хочу иметь 10 свободных бегунов, чтобы ускорить процесс загрузки образа докера. Как у меня может быть только 1 бездействующий бегун, и чтобы остальные бегуны могли порождаться и быстро выбирать новые задания (я хочу, чтобы новые бегуны загружали образы докера из холостого хода)?