Что такое конструкция extends в gitlab-ci.yml и для чего нужна?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

В 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 при конфликте ключей.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее