-
Notifications
You must be signed in to change notification settings - Fork 5
Deploy to Abgabe
Carsten Gips edited this page Jan 24, 2022
·
6 revisions
Studierende gegen ihren Code per Pull-/Merge-Request ab. Dies triggert eine CI-Pipeline, die einerseits inhaltliche Richtigkeit prüft (Tests) und andererseits Metriken zum Code-Style etc. erhebt. Daraus resultieren dann Punkte für das jeweilige Team.
- Github als Angebot, interner Gitlab als Fallback (Pflicht)
- "Welt" sollte die Lösungen der Studis und Ergebnisse der CI-Pipeline nicht sehen können
- Studis sollte die Lösungen der anderen Teams und deren Ergebnisse der CI-Pipeline nicht sehen können
- Auf GH sollte keine Punkte/Noten berechnet werden
- Das Vorgaberepo wird als private Kopie für jedes Studi-Team durch die TA bereitgestellt (keinen Fork, da dieser wieder public ist -- stattdessen manuelles Anlegen der Repos und Pushen des Vorgabe-Codes)
- TA sind Admin, Studis bekommen nur Developer-Rechte (können nur Feature-Branches und PR/MR aufmachen)
- Die CI-Pipelines sind im Vorgaberepo konfiguriert und damit in der Team-Kopie verfügbar und durch die Studi-Teams aktivierbar
- Pull-/Merge-Requests gehen gegen die Master-Branches der Team-Repos => Studis bekommen unmittelbares Feedback in ihrem eigenen Repo
- Falls möglich: Feedback durch TA in den Pull-/Merge-Requests(?)
- Bei Deadline: Pull-/Merge-Requests werden von TA "akzeptiert" (gemergt), dabei läuft noch einmal die CI-Pipeline
- Lokal: Skript, welches die Ergebnisse der CI-Pipelines aus den Team-Repos extrahiert und lokal als CSV/JSON/XML ablegt (relevante Aspekte, anonyme User-Namen)
- Punkte können auch manuell von TA in Excel-Tabelle übertragen werden
- Ergebnisse (Log, Artefakte) bleiben im PR/MR erhalten => Speicherdauer hochdrehen im GH/GL
- Tabelle/Maßstab für Übersetzung Tests+Metriken => Punkte für TA
- Lokal: Tabelle mit Übersetzung von anonymen User-Namen zu Studi (erst bei Anmeldung der Studis zur Prüfung?)
Diese Lösung funktioniert sowohl mit Github-Repos als Repos im internen Gitlab und (mit Einschränkungen) sogar mit einer Abgabe über ILIAS.
Zur Not kann man zur Bewertung auch die Repos lokal clonen, die CI-Scripte lokal laufen lassen und damit die Bewertung komplett lokal erzeugen.
-
Vorgaben von JUnit-Testsuiten
- (+) etablierter Mechanismus nutzbar
- (-) detaillierte Vorgabe von Schnittstellen, schränkt Kreaktivität teilweise sehr ein
-
Vorgaben von Input-/Output-Paaren
- (+) einfacher Mechanismus zum Prüfen von innerem Verhalten ohne Vorgabe von Schnittstellen o.ä.
- (-) Mechanismus muss selbst aufgebaut werden
- (-) Studis müssen ggf. Build-Skripte mitliefern
-
Erheben von Metriken mit Checkstyle, PMD und anderen Tools (vgl. Dietz et al.: "Teaching Clean Code", http://ceur-ws.org/Vol-2066/isee2018paper06.pdf)