Skip to content

Exclude empty slices during the validation of the config.toml

Romuald Atchadé requested to merge config-best-effort-validation into main

What does this MR do?

This MR makes sure that empty slices are ignored when validating the config.toml provided by the user. While the INFO logs do not affect the functionality of GitLab Runner, they do cause confusion.

Why was this MR needed?

This MR is needed to reduce the noise in GitLab Runner logs when validating the config.toml provided

What's the best way to test this MR?

config.toml
concurrent = 1
check_interval = 1
log_level = "debug"
shutdown_timeout = 0

listen_address = ':9252'

[session_server]
  session_timeout = 1800

[[runners]]
  name = ""
  url = "https://gitlab.com/"
  id = 0
  token = "glrt-REDACTED"
  token_obtained_at = "0001-01-01T00:00:00Z"
  token_expires_at = "0001-01-01T00:00:00Z"
  executor = "kubernetes"
  shell = "bash"
  [runners.kubernetes]
    host = ""
    bearer_token_overwrite_allowed = false
    image = "alpine"
    memory_request = "128Mi"
    cpu_request = "1"
    namespace = ""
    namespace_overwrite_allowed = ""
    pod_labels_overwrite_allowed = ""
    service_account_overwrite_allowed = ""
    pod_annotations_overwrite_allowed = ""
    node_selector_overwrite_allowed = ".*"
    allow_privilege_escalation = false
    [runners.kubernetes.affinity]
      [runners.kubernetes.affinity.node_affinity]
        [runners.kubernetes.affinity.node_affinity.required_during_scheduling_ignored_during_execution]
          [[runners.kubernetes.affinity.node_affinity.required_during_scheduling_ignored_during_execution.node_selector_terms]]
            [[runners.kubernetes.affinity.node_affinity.required_during_scheduling_ignored_during_execution.node_selector_terms.match_expressions]]
              key = "kubernetes.io/os"
              operator = "In"
              values = ["linux"]
    [[runners.kubernetes.services]]
    [runners.kubernetes.dns_config]
    [runners.kubernetes.pod_labels]

Start GitLab Runner using the main branch and the config.toml provided above

GitLab Runner log will display an error similar to this:

There might be a problem with your config based on jsonschema annotations in common/config.go (experimental feature):
jsonschema: '/runners/0/kubernetes/affinity/node_affinity/preferred_during_scheduling_ignored_during_execution' does not validate with https://gitlab.com/gitlab-org/gitlab-runner/common/config#/$ref/properties/runners/items/$ref/properties/kubernetes/$ref/properties/affinity/$ref/properties/node_affinity/$ref/properties/preferred_during_scheduling_ignored_during_execution/type: expected array, but got null

Start GitLab Runner using the MR branch config-best-effort-validation and the config.toml provided above

There won't be any error related to k8s PodAffinity

What are the relevant issue numbers?

fixes #36868 (closed)

Merge request reports