Перейти к основному содержимому

Сдача и проверка в CI

Сдача — это коммит папки solutions/. Никакой отправки формы, никакого сервера: преподаватель запускает ту же проверку, что была у вас в браузере, тем же образом раннера.

Что коммитить

в репозитории студента
solutions/
t01_active_shops_with_seats.sql ваши решения
.status.json что проходило проверку и когда
.gitignore сюда раннер сам добавил .history/

История запросов и закладки в коммит не попадают — они лежат в solutions/.history/, который раннер вносит в .gitignore при первом запуске.

Проверка своими руками

Тот же прогон, что делает преподаватель, доступен и вам:

из каталога с docker-compose.yml
docker compose run --rm runner runner ci --pack /pack --solutions /solutions

Команда читает файлы решений, гоняет каждое по всем вариантам данных и печатает результат по заданиям. Ненулевой код возврата означает, что сошлось не всё.

Почему результат совпадает

Проверка в браузере и проверка в CI — это один и тот же код: обе стороны вызывают packcore, а не «похожую логику». Совпадают:

  • сам образ раннера — CI берёт его из registry, тот же тег;
  • пак — тот же каталог, те же варианты данных и те же ожидаемые результаты;
  • нормализация результата — порядок строк, точность чисел, регистр имён колонок, NULL.

Поэтому «у меня работало» здесь не бывает. Если решение зелёное локально, оно зелёное и в CI.

Не коммитьте пак

В репозиторий студента едет только solutions/. Пак раздаёт преподаватель, и его содержимое — включая ожидаемые результаты — не должно попадать в ваши коммиты.

Что видит преподаватель

Отчёт по заданиям: какие сошлись, какие нет, на скольких вариантах данных упало. Текст решения — в git, вместе с историей коммитов, поэтому видно и как студент к нему шёл.