Gitlab runner выбирает новые задания слишком медленно, если IdleCount не равен нулю - PullRequest
0 голосов
/ 14 января 2019

Я бы хотел, чтобы у меня всегда был 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 бездействующий бегун, и чтобы остальные бегуны могли порождаться и быстро выбирать новые задания (я хочу, чтобы новые бегуны загружали образы докера из холостого хода)?

...