Что означает точка в начале строки в файле .gitlab-ci.yml?

«Что означает точка в начале строки в файле .gitlab-ci.yml?» — вопрос из категории CI/CD, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В контексте файла .gitlab-ci.yml, который написан на YAML, точка (.) в начале строки обычно имеет два специальных значения:

1. Скрытые (hidden) или анкорные (anchor) job-ы. Если имя job начинается с точки, GitLab CI/CD считает его скрытым шаблоном и не будет выполнять такую job напрямую. Это используется для создания шаблонов, которые потом можно переиспользовать в других job-ах через алиасы (&) и ссылки (*).

# Определяем шаблон job с якорем `.build_template`
.build_template: &build_definition
  stage: build
  script:
    - echo "Running build steps..."
    - mvn clean compile
  artifacts:
    paths:
      - target/

# Используем шаблон в реальной job, добавляя свои параметры
build_java_app:
  <<: *build_definition # Вставляем содержимое шаблона
  variables:
    MAVEN_OPTS: "-Xmx2g"

# Эта job `.build_template` сама по себе выполнена НЕ БУДЕТ.

2. Якоря (Anchors) в YAML для любых данных. Точка используется в синтаксисе YAML для создания якоря, на который потом можно ссылаться. Это не специфично для GitLab, но активно там применяется.

# Определяем общие переменные как якорь `.common_vars`
.common_vars: &common_vars
  DATABASE_URL: postgresql://prod-db
  LOG_LEVEL: INFO

deploy_staging:
  variables:
    <<: *common_vars # Подставляем общие переменные
    ENVIRONMENT: staging

deploy_production:
  variables:
    <<: *common_vars
    ENVIRONMENT: production

Итог: Точка в начале имени элемента в .gitlab-ci.yml — это соглашение, обозначающее неисполняемый шаблон или блок для переиспользования. Это мощный инструмент для устранения дублирования и поддержания конфигурации в чистоте.