Какие файлы или сущности в GitLab CI начинаются с точки?

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

Ответ

В экосистеме GitLab CI/CD с точки (.) начинаются в основном файлы и директории конфигурации, которые часто являются скрытыми в Unix-подобных системах.

Ключевые сущности:

  1. .gitlab-ci.yml Это основной и обязательный файл конфигурации пайплайнов. GitLab автоматически обнаруживает его в корне репозитория и использует для определения jobs, stages и скриптов.

  2. .gitlab/ директория Специальная директория для хранения дополнительных конфигурационных файлов, связанных с GitLab. Например:

    • .gitlab/merge_request_templates/ – шаблоны описания merge request.
    • .gitlab/issue_templates/ – шаблоны для создания issues.
    • .gitlab/CODEOWNERS – файл для определения ответственных за части кода.
  3. Другие конфигурационные файлы репозитория Хотя они не специфичны для CI/CD, они влияют на его работу:

    • .gitignore – определяет, какие файлы не отслеживаются Git (а значит, и не попадают в контекст runner-а, если не указано иное).
    • .gitattributes – может управлять поведением Git, например, настройкой diff для определенных файлов.

Пример структуры репозитория с CI/CD:

my-project/
├── .gitlab-ci.yml          # <-- Конфигурация пайплайнов
├── .gitignore              # <-- Игнорируемые файлы (node_modules, .env)
├── .gitlab/                # <-- Директория с шаблонами GitLab
│   ├── merge_request_templates/
│   │   └── default.md
│   └── issue_templates/
│       └── bug.md
├── src/                    # Исходный код приложения
└── README.md

Важно: Runner, который выполняет jobs, клонирует репозиторий целиком, включая эти скрытые файлы (если они закоммичены). Поэтому в .gitignore часто добавляют служебные файлы runner-а или артефакты сборки, чтобы не засорять репозиторий.