Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| howto:git:classroom50:einrichtung [2026/08/17 08:51] – Sync aus BZZ-Commons/pygrader50 (v2.1.2) admin | howto:git:classroom50:einrichtung [2026/08/25 10:07] (aktuell) – Veraltet - Inhalt jetzt unter github.com/BZZ-Commons/pygrader50/docs admin | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Classroom 50: Ein Klassenzimmer einrichten ====== | ||
| - | |||
| - | Von einem laufenden Classroom 50 bis zu Noten in Moodle — für ein **beliebiges** | ||
| - | Klassenzimmer. Reihenfolge einhalten; jeder Schritt ist einzeln prüfbar. | ||
| - | |||
| - | ^ Platzhalter ^ Bedeutung ^ Beispiel ^ | ||
| - | | ''< | ||
| - | | ''< | ||
| - | | ''< | ||
| - | | ''< | ||
| - | |||
| - | ''< | ||
| - | Kurzname steht in ''< | ||
| - | |||
| - | ===== 0. Voraussetzungen ===== | ||
| - | |||
| - | Ein '' | ||
| - | ('' | ||
| - | '' | ||
| - | |||
| - | <code bash> | ||
| - | gh extension install foundation50/ | ||
| - | gh auth refresh -h github.com -s admin: | ||
| - | gh teacher classroom list <ORG> | ||
| - | </ | ||
| - | |||
| - | Ohne '' | ||
| - | Scope-Meldung ab. Der Refresh öffnet den Browser und braucht ein interaktives | ||
| - | Terminal. | ||
| - | |||
| - | ===== 1. Engine veröffentlichen ===== | ||
| - | |||
| - | Nur nötig, wenn pygrader50 selbst weiterentwickelt wird — für ein neues | ||
| - | Klassenzimmer pinnt man einen bestehenden Tag und überspringt diesen Schritt. | ||
| - | |||
| - | <code bash> | ||
| - | git tag v2.1.2 && git push origin main --tags | ||
| - | </ | ||
| - | |||
| - | Der Tag ist das, was die Klassenzimmer pinnen. Ohne Tag kein reproduzierbares | ||
| - | Semester: '' | ||
| - | |||
| - | Zum Tag gehören die Werkzeug-Versionen. '' | ||
| - | '' | ||
| - | installierte jeder Bewertungslauf das jeweils Neueste und eine | ||
| - | pylint-Minor-Version verschöbe mitten im Semester allen die Lint-Punkte. Ein | ||
| - | Upgrade heisst deshalb: | ||
| - | |||
| - | - Pins in '' | ||
| - | - '' | ||
| - | - '' | ||
| - | - Taggen, dann Schritt 2 erneut ausführen. | ||
| - | |||
| - | **Prüfen**, | ||
| - | Studi-Lauf: | ||
| - | |||
| - | <code bash> | ||
| - | python3 -m venv /tmp/pin && / | ||
| - | " | ||
| - | </ | ||
| - | |||
| - | ===== 2. Default-Autograder setzen ===== | ||
| - | |||
| - | Pro Klassenzimmer einmal: | ||
| - | |||
| - | <code bash> | ||
| - | gh teacher autograder set-default <ORG> < | ||
| - | </ | ||
| - | |||
| - | Das legt ''< | ||
| - | stellt die Datei auf die Pages-Site, wo '' | ||
| - | |||
| - | Die gepinnte Version steht in '' | ||
| - | |||
| - | <code python> | ||
| - | VERSION = ' | ||
| - | </ | ||
| - | |||
| - | Ein Upgrade heisst später: Tag hochziehen, Zeile ändern, '' | ||
| - | ausführen — pro Klassenzimmer, | ||
| - | unterschiedlichen Versionen bleiben. | ||
| - | |||
| - | **Vorher prüfen**, was überschrieben wird: | ||
| - | |||
| - | <code bash> | ||
| - | gh teacher autograder show <ORG> < | ||
| - | gh teacher autograder list <ORG> < | ||
| - | </ | ||
| - | |||
| - | **Nachher prüfen**, dass Pages die Datei ausliefert: | ||
| - | |||
| - | <code bash> | ||
| - | curl -sS -o /dev/null -w ' | ||
| - | https://< | ||
| - | </ | ||
| - | |||
| - | <WRAP center round important 90%> | ||
| - | Das Klassen-Segment im Pfad ist Pflicht. '' | ||
| - | ''< | ||
| - | braucht nach dem Push rund 30 Sekunden. | ||
| - | </ | ||
| - | |||
| - | Dann in einem Test-Repo etwas pushen: Das Release muss eine echte Punktzahl | ||
| - | zeigen (z.B. '' | ||
| - | Konfigurationsdateien gefunden wurden. | ||
| - | |||
| - | ===== 3. Aufgaben-Konfiguration ablegen ===== | ||
| - | |||
| - | Die drei Dateien können bleiben, wo sie sind ('' | ||
| - | Studi-Repo) — dann ist nichts zu tun. Manipulationssicher wird es erst im | ||
| - | Config-Repo, | ||
| - | |||
| - | Aufbau, Vorrangregeln und Beispiele: [[.: | ||
| - | |||
| - | < | ||
| - | classroom50/ | ||
| - | └── < | ||
| - | └── autograders/ | ||
| - | └── < | ||
| - | ├── unittests.json | ||
| - | ├── lint.json | ||
| - | └── pylintrc | ||
| - | </ | ||
| - | |||
| - | **Prüfen: | ||
| - | lassen — die neue Maximalpunktzahl muss im Release stehen. | ||
| - | |||
| - | ===== 4. Template-Repos migrieren ===== | ||
| - | |||
| - | Nur bei Klassen, die von GitHub Classroom kommen — vollständig beschrieben unter | ||
| - | [[.: | ||
| - | |||
| - | <code bash> | ||
| - | scripts/ | ||
| - | scripts/ | ||
| - | </ | ||
| - | |||
| - | Danach den alten Moodle-Token **löschen und rotieren**. | ||
| - | |||
| - | ===== 5. Moodle-Übertrag einrichten ===== | ||
| - | |||
| - | ==== 5.1 Workflow einbauen ==== | ||
| - | |||
| - | <code bash> | ||
| - | cp classroom50/ | ||
| - | </ | ||
| - | |||
| - | Eigener Dateiname, keine bestehende Datei anfassen: '' | ||
| - | die mitgelieferten Skeleton-Workflows bei einem Refresh. | ||
| - | |||
| - | Die Datei ist klassenzimmer-neutral. Bleibt die Eingabe '' | ||
| - | jeder Ordner mit einer '' | ||
| - | Klassen braucht keine zweite Kopie. Anzupassen ist nur der gepinnte Tag, falls | ||
| - | er von '' | ||
| - | |||
| - | ==== 5.2 Zugangsdaten, | ||
| - | |||
| - | Siehe [[.: | ||
| - | |||
| - | - Secret '' | ||
| - | - In Moodle je Aufgabe eine Aktivität //External Assignment// | ||
| - | - **Actions → Moodle Sync → Run workflow** mit '' | ||
| - | - Dasselbe ohne '' | ||
| - | |||
| - | ===== 6. Betriebsfallen ===== | ||
| - | |||
| - | Vier Verhaltensweisen der Classroom-50-Seite, | ||
| - | '' | ||
| - | Roster, das Roster heisst '' | ||
| - | Administration-Rechte. Ausgeführt unter | ||
| - | [[.: | ||
| - | |||
| - | ===== Verantwortlichkeiten ===== | ||
| - | |||
| - | ^ Was ^ Wo ^ Warum dort ^ | ||
| - | | Bewertungs-Engine, | ||
| - | | Default-Autograder, | ||
| - | | Startcode, Tests, Musterlösung | Template-Repo | gehört zur Aufgabe | | ||
| - | | Abgabe | Studi-Repo | gehört den Lernenden | | ||