Что такое extends в GitLab CI? Как работает приоритет при наследовании?
Ответ от нейросети
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 при конфликте ключей.