Сдача и проверка в CI
Сдача — это коммит папки solutions/. Никакой отправки формы, никакого сервера: преподаватель запускает ту же проверку, что была у вас в браузере, тем же образом раннера.
Что коммитить
solutions/
t01_active_shops_with_seats.sql ваши решения
.status.json что проходило проверку и когда
.gitignore сюда раннер сам добавил .history/
История запросов и закладки в коммит не попадают — они лежат в solutions/.history/, который раннер вносит в .gitignore при первом запуске.
Проверка своими руками
Тот же прогон, что делает преподаватель, доступен и вам:
docker compose run --rm runner runner ci --pack /pack --solutions /solutions
Команда читает файлы решений, гоняет каждое по всем вариантам данных и печатает результат по заданиям. Ненулевой код возврата означает, что сошлось не всё.
Почему результат совпадает
Проверка в браузере и проверка в CI — это один и тот же код: обе стороны вызывают packcore, а не «похожую логику». Совпадают:
- сам образ раннера — CI берёт его из registry, тот же тег;
- пак — тот же каталог, те же варианты данных и те же ожидаемые результаты;
- нормализация результата — порядок строк, точность чисел, регистр имён колонок,
NULL.
Поэтому «у меня работало» здесь не бывает. Если решение зелёное локально, оно зелёное и в CI.
В репозиторий студента едет только solutions/. Пак раздаёт преподаватель, и его содержимое — включая ожидаемые результаты — не должно попадать в ваши коммиты.
Что видит преподаватель
Отчёт по заданиям: какие сошлись, какие нет, на скольких вариантах данных упало. Текст решения — в git, вместе с историей коммитов, поэтому видно и как студент к нему шёл.