Shared runners always preferred over group runner / runner not maintaining contact
Summary
In my project which uses shared (public) runners as well as a group runner, the shared runners are always picked in favor of the private runner. The private runner is working if I disable the shared runners. The "last contact" property of the private runner does not update unless a job is running on the private runner.
Steps to reproduce
Register and run a group runner. Enable the group runner as well as shared runners in the group. Create a project (nothing else to be set in the project) and create/run a basic pipeline.
.gitlab-ci.yml
stages:
- hello
hello-world:
stage: hello
script:
- echo hello world
Actual behavior
- The pipeline runs on the shared (public) runner.
- The group runner reports "Last contact: 1 minute ago" (the number increases every minute)
Expected behavior
- The pipeline runs on the group runner.
- The group runner reports "Last contact: just now"
Relevant logs and/or screenshots
The runner is polling for jobs but not getting any:
Dialing: tcp gitlab.com:443 ...
Checking for jobs... nothing runner=t6pse84X
Feeding runners to channel builds=0
Feeding runners to channel builds=0
Checking for jobs... nothing runner=t6pse84X
Feeding runners to channel builds=0
Checking for jobs... nothing runner=t6pse84X
Feeding runners to channel builds=0
Checking for jobs... nothing runner=t6pse84X
Checking for jobs... nothing runner=t6pse84X
Feeding runners to channel builds=0
Feeding runners to channel builds=0
Checking for jobs... nothing runner=t6pse84X
Feeding runners to channel builds=0
Environment description
The group and project are using the public shared runners as well as a single group runner. This is the configuration of the group runner:
config.toml contents
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "3900X"
url = "https://gitlab.com/"
token = "XXXXXXXXXXXXXXXXXX"
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "docker:git"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
This configuration is created by the register command only giving the token and confirming all other settings with the flags --url https://gitlab.com/ --executor docker --docker-image docker:git --docker-privileged --locked=false
Used GitLab Runner version
Version: 14.0.1
Git revision: c1edb478
Git branch: refs/pipelines/326100216
GO version: go1.13.8
Built: 2021-06-23T16:35:23+0000
OS/Arch: linux/amd64
Possible fixes
I don't know, but the fact that "Last contact" no longer shows "just now" seems really suspicious. I haven't been paying very close attention, but it feels like these two things broke simultaneously.