Sobes.tech
Back to questions
Senior
6

Что такое extends в GitLab CI? Как работает приоритет при наследовании?

Companies where asked
WildberriesWildberries

Answer from AI

sobes.tech AI

В GitLab CI директива extends позволяет одному job наследовать конфигурацию другого job или шаблона. Это помогает избежать дублирования кода в .gitlab-ci.yml и структурировать пайплайны.

При использовании extends можно указать один или несколько шаблонов, от которых будет унаследована конфигурация. Если в наследуемом и наследующем job есть одинаковые ключи, то приоритет имеет значение из наследующего job — оно переопределяет унаследованное.

Пример:

.base_job:
  image: python:3.8
  script:
    - echo "Base job"

job1:
  extends: .base_job
  script:
    - echo "Job1 script"

В этом примере job1 наследует image из .base_job, но переопределяет script.

Если нужно объединить списки (например, несколько скриптов), то наследующий job полностью заменит список унаследованного, объединение не происходит автоматически.

Таким образом, extends — мощный инструмент для переиспользования конфигураций в GitLab CI, а приоритет всегда у наследующего job при конфликте ключей.