Classroom50: Moodle sync einrichten
Diese Seite erklärt, wie die Noten aus Classroom 50 automatisch ins Moodle-Notenbuch kommen. Der Übertrag läuft nachts, du musst nichts von Hand starten.
Voraussetzungen
- Die Organisation ist in GitHub und Classroom50 erstellt Classroom50: Organisation einrichten.
- Die Klasse ist erstellt Classroom50: Classroom erstellen.
- Die Assignments sind erstellt — inklusive external assignment in Moodle Classroom50: Assignment erstellen.
1. Workflow ins Repo kopieren
moodle-sync.yaml ist BZZ-eigen und wird nicht von Classroom50
mitgeliefert. Du kopierst sie einmal pro Config-Repo von Hand hinein — die
Vorlage liegt im Repository BZZ-Commons/pygrader50
im Ordner classroom50/.
- Öffne das Repository
classroom50in deiner GitHub-Organisation, z.B.https://github.com/m320-ix25/classroom50. - Kopiere
moodle-sync.yamlnach.github/workflows/moodle-sync.yaml. - Committen. Der Workflow erscheint danach unter Actions → Moodle Sync.
Den Dateinamen so lassen und keine bestehende Workflow-Datei dafür verwenden: Classroom50 überschreibt seine eigenen Workflows bei einem Update.
Die Datei gilt für alle Klassen im Repo — eine Kopie genügt, auch bei mehreren Klassenordnern.
2. Zugangsdaten hinterlegen
Ebenfalls im Repo classroom50, unter Settings → Secrets and variables →
Actions:
| Art | Name | Wert |
|---|---|---|
| Secret | MOODLE_TOKEN | Webservice-Token aus Moodle |
| Variable | MOODLE_URL | https://moodle.bzz.ch |
Oder im Terminal:
gh secret set MOODLE_TOKEN --repo <ORG>/classroom50 gh variable set MOODLE_URL --repo <ORG>/classroom50 --body "https://moodle.bzz.ch"
Der Token gehört nur ins classroom50-Repo, nie in ein Repo der
Lernenden — damit lassen sich Noten für beliebige Personen setzen.
3. Zuordnung prüfen
Damit eine Note ankommt, muss die Person in Moodle gefunden werden:
- Die lernende Person hat ihren GitHub-Login im Moodle-Profil eingetragen, im Feld GitHub Classroom → Anleitung.
- Die Person ist im Moodle-Kurs eingeschrieben.
- Die Aktivität external assignment heisst exakt wie der Slug der Aufgabe, z.B.
m323-lu01-a02-imperativer-ggt.
Der Moodle-Benutzername spielt keine Rolle — gesucht wird nur im Profilfeld.
4. Testen
Im Repo classroom50 unter Actions → Moodle Sync → Run workflow,
Häkchen bei dry_run (zeigt nur an, schreibt nichts):
Moodle-Übertrag: 2 Abgaben [dry-run] <SLUG> / anna: 5/7 [dry-run] <SLUG> / bruno: 7/7 übertragen: 2 | unverändert: 0 | fehlgeschlagen: 0
Sieht das gut aus, dasselbe ohne dry_run laufen lassen. Danach ist die
Einrichtung fertig.
Zum Testen einen echten Login einer lernenden Person nehmen. Der eigene Lehrer-Account ist im Kurs meist kein Teilnehmer — der Test scheitert dann, obwohl alles richtig eingerichtet ist.
Ab jetzt automatisch
| Wann | Was |
|---|---|
| nachts | Classroom 50 sammelt alle Abgaben ein |
| 04:57 | moodle-sync trägt sie ins Moodle-Notenbuch ein |
Übertragen wird pro Person und Aufgabe die neueste Abgabe, zusammen mit Punktzahl, Feedback und Link zur Abgabe. Schon Übertragenes wird übersprungen — ausser die Punktzahl hat sich geändert.
Zwischendurch von Hand: Actions → Moodle Sync → Run workflow. Der Schalter
force sendet auch schon Übertragenes nochmals.
Wenn etwas nicht klappt
| Meldung / Symptom | Das hilft |
|---|---|
| kein Eintrag Moodle Sync unter Actions | Schritt 1 nachholen |
No Moodle user found with username „X“ | Person trägt ihren GitHub-Login im Moodle-Profil nach |
No matching assignment found | Aktivitätsname stimmt nicht oder Person ist nicht im Kurs — beides prüfen |
keine XML-Antwort erhalten | MOODLE_URL oder Token falsch |
| Note kommt nicht an, Log sagt „unverändert„ | nochmals auslösen, diesmal mit force |
| Nachtlauf jede Nacht rot, immer dieselbe Person | alter Eintrag in scores.json, siehe Betrieb |
Details
- Moodle — Hintergründe, alle Felder, Zustandsfile
- Einrichtung — vollständige Einrichtung inkl. Autograder
- CLI-Referenz — Übertrag lokal prüfen, alle Optionen
- Hilfe und Dokumentation — Übersicht über die ganze Dokumentation