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.

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/.

  1. Öffne das Repository classroom50 in deiner GitHub-Organisation, z.B. https://github.com/m320-ix25/classroom50.
  2. Kopiere moodle-sync.yaml nach .github/workflows/moodle-sync.yaml.
  3. 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.

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.

Damit eine Note ankommt, muss die Person in Moodle gefunden werden:

  1. Die lernende Person hat ihren GitHub-Login im Moodle-Profil eingetragen, im Feld GitHub ClassroomAnleitung.
  2. Die Person ist im Moodle-Kurs eingeschrieben.
  3. 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.

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.

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.

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
  • howto/git/classroom50/moodle_simple.txt
  • Zuletzt geändert: 2026/08/25 10:09
  • von admin