Хорошо, так что это может показаться немного странным, но вот оно.
Я изучаю лабораторию структур данных и алгоритмов в своем местном университете и хочу, чтобы мои ученики были в курсе всех интересных и интересных событий. До сих пор я использовал простой репозиторий git, который каждый ученик разветвлял, и всякий раз, когда они выполняли задание, они делали запрос push + pull, я бы просмотрел их код, и если все будет в порядке, я бы объединил запрос pull основное репо. Это работает очень хорошо, но я хочу сделать что-то более интересное.
Лаборатория учится на C (даже С++) (и нет, я не хочу вступать в какую-либо полемику о том, почему лучше будет использовать другой язык). Я хочу сделать что-то вроде выполнения сборки Jenkins при каждом нажатии ученика, который проверяет некоторые предопределенные тесты для этой задачи.
Например, на вторую неделю я дам им домашнее задание со списками. Я хотел бы сам написать тесты для этой домашней работы, а затем автоматически проверить, что они сделали с помощью этих тестов.
Что у меня есть:
- 24/7 работает машина CentOS, которую я могу использовать, чтобы что-то добавить (у меня есть Jenkins и Tomcat, работающие на нем atm)
- достаточно времени и силы воли, чтобы попытаться сделать свой опыт в этой лаборатории хорошо стоящим.
++ очень приятное дополнение для всего этого было бы использовать что-то вроде сонара в качестве верификатора кода. И проверять дублированный код внутри своих ветвей (чтобы увидеть, кто-нибудь скопировал ответ от кого-то другого)
Я на правильном пути, идя на сервер Jenkins, думая о гидролокаторе и т.д.? Я в отъезде? Я не думаю, что это невозможно. Это может быть сложно, да, но это делает его забавным ^^
"поток", который я хочу, это:
- каждый студент является частью организации git + repo
- они создают ветку от локального мастера (я наложу ограничение, например: "используйте только подпапку с вашим именем" )
- главная ветвь будет содержать тесты
- они будут работать над своей домашней работой на своей ветке, а затем подтолкнуть ее к Jenkins/Gerrit/whatever
- ветвь каким-то образом будет протестирована, и если все тесты пройдут, она будет объединена с мастером.
От имени моих дорогих учеников, спасибо.