Докладываю обстановку в связи с закрытием GitHub Classroom 🖥
За минувшие сутки было испытано три решения.
Первые два не впечатлили:
-
Codio.com, на который GitHub Classroom предлагает переезжать, собрал кучу данных для регистрации наставника, сутки думал, потом запросил дополнительные подтверждения моей аффилиации, снова ушел думать.
-
Stepik.org во многом очень симпатичная история, но для R возможности проверки ограничены, нельзя (или я пока не вижу, как) настроить скрытые тесты, максимум -- сравнение выводов.
Третье пока кажется самым простым, расписываю по шагам.
- создаем организацию GitHub, в ней — шаблон с заданием (публичный), а также репозиторий с тестами (приватный)
- в личных настройках выпускаем fine-grained токен для этой огранизации и строго для репозитория с тестами к этому дз (разрешение: contents, read-only).
- копируем токен, идем в настройки организации, добавляем в Secrets and variables / Actions.
- после этого возвращаемся в репозиторий с дз и создаем
.github/workflows/grading.yml, который будет управлять проверкой (о его содержании спросите у ии).
Важные нюансы:
- при копировании из шаблона студент должен выбрать владельцем вашу организацию, токены не действительны за ее пределами;
- на бесплатном тарифе токен можно настроить только для публичных репозиториев;
- в настройках организации в разделе Third-party access — Personal access tokens лучше переставить галочку на Do not require administrator approval
Плюсы:
- бесплатно
- относительно безопасно: студенты никак не могут подсмотреть скрытые тесты (хотя могут подглядывать друг к другу, см. upd2)
- можно использовать родной для R testthat
- cтуденты учатся работать с настоящим Git и GitHub
Минусы:
- лимиты бесплатных минут: на бесплатном тарифе GitHub предоставляет 2000 минут GitHub Actions в месяц на организацию. Для R-скриптов этого обычно хватает с запасом, но если студентов больше 50-100 и они пушат код каждые 5 минут, лимит может исчерпаться
- менеджмент токенов: для каждого нового домашнего задания (если тесты лежат в разных репозиториях) надо либо обновлять доступы текущего токена, либо создавать новый
- в организации будет много репозиториев студентов, которые надо проверять (если хотите проверять) вручную
Итого:
- Максимальное близкое к Classroom решение, но нет ведомости, в которой автоматически выставляются галочки для сданных работ, и нет дедлайна отсечения. Впрочем, последние две проблемы решаются, но об этом надо отдельно подумать #classroom
upd: в настройках организации надо обязательно поменять member privileges с base permissions на no permissions! иначе все участники смогут читать тесты 🫠
upd: чтобы студенты не видели репозиториев друг друга, нужно либо платить (а это примерно 50 долларов в год на человека, немало), либо отправить запрос через GitHub Education. Я прошла почти всю их анкету, чтобы выяснить в конце, что GitHub заблокировал программу GitHub Education для России, России просто нет в выпадающем списке. это тоже решается скриптом, впрочем, но все равно в книжечку запишем