howto:git:classroom50:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
howto:git:classroom50:start [2026/08/18 12:22] – Sync aus BZZ-Commons/pygrader50: Moodle-Zuordnung über das Profilfeld korrigiert adminhowto:git:classroom50:start [2026/08/25 10:05] (aktuell) – Veraltet - Inhalt jetzt unter github.com/BZZ-Commons/pygrader50/docs admin
Zeile 1: Zeile 1:
-====== Classroom 50 an der BZZ ====== 
- 
-**Classroom 50** ([[https://github.com/foundation50/classroom50|foundation50/classroom50]]) 
-ersetzt GitHub Classroom. Es verteilt Aufgaben aus Template-Repositories, 
-erstellt pro Lernender und Aufgabe ein privates Repository, bewertet jeden Push 
-automatisch und sammelt die Resultate ein. 
- 
-Die eigentliche Bewertung — pytest und pylint — macht an der BZZ 
-[[https://github.com/BZZ-Commons/pygrader50|pygrader50]], der Nachfolger von 
-''BZZ-Commons/pygrader''. Der Übertrag nach Moodle läuft nachts aus dem 
-Konfigurations-Repository der Klasse. 
- 
-===== Was sich gegenüber GitHub Classroom ändert ===== 
- 
-^ Thema ^ GitHub Classroom (bis 2026) ^ Classroom 50 (ab August 2026) ^ 
-| Aufgaben verteilen | Web-Oberfläche von GitHub Classroom | ''gh teacher''-CLI + ''assignments.json'' im Config-Repo | 
-| Bewertungs-Workflow | ''.github/workflows/classroom.yml'' in **jedem** Repo | zentraler Reusable Workflow, wird beim Anlegen eingesetzt | 
-| Bewertungs-Logik | ''BZZ-Commons/pygrader'' | ''BZZ-Commons/pygrader50'', per Tag gepinnt | 
-| Resultat der Abgabe | Kommentar / Moodle-Aufruf aus dem Studi-Repo | GitHub-Release + Commit-Status + Feedback-PR | 
-| Moodle-Übertrag | direkt aus dem Studi-Repo, Token per ''secrets: inherit'' | nachts, zentral aus dem Config-Repo | 
-| Zuordnung zu Moodle | GitHub-Benutzername im Moodle-Profil, Feld //GitHub Classroom// | **unverändert** — dasselbe Profilfeld | 
- 
-Die Zuordnung zu Moodle ändert sich als einzige **nicht**: das Plugin 
-''mod_externalassignment'' liest den GitHub-Namen weiterhin aus dem Profilfeld, 
-siehe [[howto:git:github_moodle|]] und 
-[[.:moodle|Noten nach Moodle übertragen]]. 
- 
-===== Die beteiligten Repositories ===== 
- 
-^ Repository ^ Rolle ^ 
-| ''<ORG>/classroom50'' | Konfiguration der Klasse: ''assignments.json'', ''roster.csv'', ''scores.json'', Workflows, Pages-Site. Privat. | 
-| ''<ORG>/<CLASSROOM>-<SLUG>-<LOGIN>'' | Repository einer lernenden Person für eine Aufgabe. Privat. | 
-| ''templates-python/<SLUG>'' | Startcode, Tests und Musterlösung einer Aufgabe | 
-| ''BZZ-Commons/pygrader50'' | Bewertungs-Engine und Moodle-Übertrag | 
-| ''foundation50/classroom50'' | Upstream-Projekt, [[https://github.com/foundation50/classroom50/wiki|Wiki]] | 
- 
-Platzhalter: ''<ORG>'' = GitHub-Organisation der Klasse (z.B. ''m323-ix24''), 
-''<CLASSROOM>'' = Kurzname des Klassenzimmers, ''<SLUG>'' = Kurzname einer 
-Aufgabe (z.B. ''m323-lu01-a02-imperativer-ggt''). 
- 
-===== Ablauf einer Abgabe ===== 
- 
-<code> 
-Lernende:r pusht 
-  └─ autograde-runner.yaml               (im Studi-Repo, ruft den zentralen Workflow) 
-       └─ runner.py                      (von der Pages-Site des Config-Repos) 
-            └─ <CLASSROOM>/autograder.py (Klassen-Default der BZZ) 
-                 └─ pip install pygrader50@<TAG> 
-                      └─ python -m pygrader50 
-                           ├─ result.json      → Release, Commit-Status 
-                           └─ release-body.md  → Release-Text, Job-Summary, Feedback-PR 
- 
-collect-scores (nachts)   → <CLASSROOM>/scores.json 
-  └─ moodle-sync (nachts, 04:57) → Moodle-Notenbuch 
-</code> 
- 
-Zwischen Push und Note in Moodle liegt also **eine Nacht**. Das Feedback im 
-GitHub-Repo steht dagegen nach ein bis zwei Minuten. 
- 
-===== Wo welche Konfiguration liegt ===== 
- 
-Der Runner sucht pro Aufgabe in **dieser Reihenfolge** und nimmt den ersten 
-Treffer: 
- 
-  - ''autograders/<SLUG>/autograder.py'' im Config-Repo — eigener Autograder für genau diese Aufgabe 
-  - ''autograders/<SLUG>/tests.json'' im Config-Repo — deklarative Tests von Classroom 50 
-  - ''<CLASSROOM>/autograder.py'' im Config-Repo — der Klassen-Default, an der BZZ pygrader50 
-  - nichts davon → die Abgabe wird mit **0/0** aufgezeichnet 
- 
-<WRAP center round tip 90%> 
-An der BZZ ist Punkt 3 der Normalfall. Wer für eine einzelne Aufgabe eine 
-''tests.json'' hinterlegt, schaltet für diese Aufgabe das **Linting ab** — 
-Punkt 2 gewinnt gegen Punkt 3. Details: 
-[[.:bewertung|Wie bewertet wird]]. 
-</WRAP> 
- 
-===== Weiter ===== 
- 
-  * [[.:lernende|Für Lernende: Aufgabe annehmen, bearbeiten, abgeben]] 
-  * [[.:lehrpersonen|Für Lehrpersonen: Klassenzimmer und Aufgaben verwalten]] 
-  * [[.:bewertung|Wie bewertet wird]] 
-  * [[.:moodle|Noten nach Moodle übertragen]] 
-  * [[.:einrichtung|Ein Klassenzimmer von Grund auf einrichten]] 
-  * [[.:migration|Migration von GitHub Classroom]] 
-  * [[.:troubleshooting|Problembehandlung]] 
-  * [[.:cli|CLI-Referenz]] 
  
  • howto/git/classroom50/start.1787048540.txt.gz
  • Zuletzt geändert: 2026/08/18 12:22
  • von admin