Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| howto:git:classroom50:moodle_simple [2026/08/25 09:48] – Anleitung vereinfacht: Schritt-für-Schritt-Einrichtung für Lehrpersonen, Hintergründe nach hinten admin | howto:git:classroom50:moodle_simple [2026/10/01 11:56] (aktuell) – [4. Testen] aprobst | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== | + | ====== |
| - | **Kurz gesagt:** Die Lernenden geben ihre Aufgabe auf GitHub ab. In der Nacht | + | <WRAP center round tip 60%> |
| - | holt ein Job die Punkte ab und trägt sie in Moodle ein. Du musst dafür nichts | + | Diese Seite erklärt, wie die Noten aus Classroom 50 automatisch ins |
| - | von Hand starten — aber einmal pro Kurs etwas einrichten. | + | Moodle-Notenbuch kommen. Der Übertrag läuft |
| - | + | von Hand starten. | |
| - | <WRAP center round tip 90%> | + | |
| - | **Die drei Dinge, die stimmen müssen** | + | |
| - | + | ||
| - | - In Moodle | + | |
| - | | + | |
| - | - Die Person ist **im Kurs eingeschrieben**. | + | |
| - | + | ||
| - | Stimmt eines davon nicht, kommt die Note nicht an. | + | |
| </ | </ | ||
| - | ===== Schritt 1: Aktivität in Moodle anlegen | + | ===== Voraussetzungen |
| - | Pro Aufgabe | + | |
| - | ('' | + | |
| + | | ||
| - | Der Name der Aktivität muss **exakt** der Slug der Aufgabe sein, zum Beispiel: | + | ===== 1. Workflow ins Repo kopieren ===== |
| - | < | + | '' |
| + | mitgeliefert. Du kopierst sie einmal pro Config-Repo von Hand hinein — die | ||
| + | Vorlage liegt im Repository [[https:// | ||
| + | im Ordner '' | ||
| - | Kein zusätzliches Wort, kein Leerzeichen davor oder dahinter. Am besten den | + | - Öffne das Repository '' |
| - | Slug kopieren und einfügen. | + | - Kopiere '' |
| + | - Committen. Der Workflow erscheint danach unter **Actions → Moodle Sync**. | ||
| - | ===== Schritt 2: GitHub-Login im Moodle-Profil ===== | + | <WRAP center round important 60%> |
| + | Den Dateinamen so lassen und **keine bestehende Workflow-Datei** dafür | ||
| + | verwenden: Classroom50 überschreibt seine eigenen Workflows bei einem Update. | ||
| + | </ | ||
| - | Jede lernende Person trägt ihren GitHub-Login | + | Die Datei gilt für **alle** Klassen |
| - | im Feld //GitHub Classroom// | + | mehreren Klassenordnern. |
| - | Wichtig: Der **Moodle-Benutzername spielt keine Rolle**. Gesucht wird nur in | + | ===== 2. Zugangsdaten hinterlegen ===== |
| - | diesem einen Profilfeld. Welches Feld das ist, legt die Plugin-Einstellung | + | |
| - | '' | + | |
| - | ===== Schritt 3: Zugangsdaten hinterlegen ===== | + | Ebenfalls |
| - | + | Actions**: | |
| - | Das machst du **einmal** — und zwar im Repo '' | + | |
| - | Organisation der Lernenden. | + | |
| ^ Art ^ Name ^ Wert ^ | ^ Art ^ Name ^ Wert ^ | ||
| | Secret | '' | | Secret | '' | ||
| - | | Variable | '' | + | | Variable | '' |
| - | | Variable | '' | + | |
| + | Oder im Terminal: | ||
| <code bash> | <code bash> | ||
| Zeile 51: | Zeile 48: | ||
| </ | </ | ||
| - | Für den Token in Moodle einen **eigenen Webservice-Benutzer** anlegen, der nur | + | <WRAP center round important 60%> |
| - | diese eine Funktion ausführen darf. Je weniger der Token kann, desto kleiner | + | Der Token gehört |
| - | der Schaden, falls er einmal ausserhalb landet. | + | Lernenden — damit lassen sich Noten für beliebige Personen setzen. |
| + | </ | ||
| - | ===== Schritt 4: Testen | + | ===== 3. Zuordnung prüfen |
| - | Teste mit einem **echten Login einer lernenden Person**. Dein eigener | + | Damit eine Note ankommt, muss die Person in Moodle gefunden werden: |
| - | Lehrer-Account ist im Kurs meistens kein Teilnehmer — damit schlägt der Test | + | |
| - | fehl, obwohl alles richtig eingerichtet ist. | + | |
| - | Trockenlauf (ändert nichts in Moodle): | + | - Die lernende Person hat ihren **GitHub-Login im Moodle-Profil** eingetragen, |
| + | - Die Person ist **im Moodle-Kurs eingeschrieben**. | ||
| + | - Die Aktivität //external assignment// | ||
| - | <code bash> | + | Der Moodle-Benutzername spielt keine Rolle — gesucht wird nur im Profilfeld. |
| - | gh workflow run moodle-sync.yaml --repo < | + | |
| - | -f classroom=< | + | ===== 4. Testen ===== |
| - | </ | + | |
| - | So sieht es aus, wenn es klappt: | + | Im Repo '' |
| + | Häkchen bei '' | ||
| < | < | ||
| Zeile 77: | Zeile 75: | ||
| </ | </ | ||
| - | ===== Wann läuft der Übertrag? ===== | + | Sieht das gut aus, dasselbe ohne '' |
| + | Einrichtung fertig. | ||
| - | ^ Job ^ Zeit ^ Was er tut ^ | + | <WRAP center round important 60%> |
| - | | '' | + | 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. | ||
| + | </ | ||
| + | {{: | ||
| - | Zwischen den beiden liegen 40 Minuten, damit der erste Job sicher fertig ist. | + | ===== Ab jetzt automatisch ===== |
| - | Übertragen wird pro Person und Aufgabe immer die **neueste** Abgabe. | + | ^ Wann ^ Was ^ |
| - | übertragen wurde, merkt sich die Datei '' | + | | nachts | Classroom 50 sammelt alle Abgaben ein | |
| - | Übersprungen wird nur, wenn Abgabe //und// Punktzahl gleich geblieben sind — | + | | 04:57 | '' |
| - | eine Nachbewertung derselben Abgabe geht also erneut raus. | + | |
| - | Das kommt in Moodle an: | + | Ü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. | ||
| - | ^ Moodle-Feld ^ Inhalt ^ | + | Zwischendurch von Hand: **Actions → Moodle Sync → Run workflow**. |
| - | | '' | + | '' |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | + | ||
| - | ===== Von Hand auslösen ===== | + | |
| - | + | ||
| - | Im Repo '' | + | |
| - | + | ||
| - | Eingaben: Classroom, optional Aufgabe und Login, dazu die Schalter | + | |
| - | (nur anzeigen) und '' | + | |
| - | Lässt du den Classroom leer, laufen **alle** Ordner mit einer '' | + | |
| ===== Wenn etwas nicht klappt ===== | ===== Wenn etwas nicht klappt ===== | ||
| - | ^ Meldung / Symptom | + | ^ Meldung / Symptom ^ Das hilft ^ |
| - | | '' | + | | kein Eintrag **Moodle Sync** unter Actions | Schritt 1 nachholen | |
| - | | '' | + | | '' |
| - | | '' | + | | '' |
| - | | Note kommt nicht an, Log sagt „unverändert" | + | | '' |
| - | | Nachtlauf jede Nacht rot, immer dieselbe Person | alter Eintrag in '' | + | | Note kommt nicht an, Log sagt „unverändert" |
| + | | Nachtlauf jede Nacht rot, immer dieselbe Person | alter Eintrag in '' | ||
| - | ===== Zum Nachschauen | + | ===== Details |
| - | + | ||
| - | ==== Warum zentral und nicht im Repo der Lernenden? ==== | + | |
| - | + | ||
| - | Mit dem Moodle-Token kann man Noten für **beliebige Personen** setzen. Läge er | + | |
| - | in einem Studi-Repo, könnte ihn ein selbst hinzugefügter Workflow in drei | + | |
| - | Zeilen auslesen. Genau so war es unter GitHub Classroom | + | |
| - | ('' | + | |
| - | Workflow '' | + | |
| - | Bewertungs-Job weiter. | + | |
| - | + | ||
| - | ==== Warum nachts und nicht bei jedem Push? ==== | + | |
| - | + | ||
| - | Der direkte Weg hätte einen Token in jedem Studi-Repo gebraucht, eine eigene | + | |
| - | Workflow-Datei pro Repo, eine nachgebaute Skip-Logik und rund 33 % mehr | + | |
| - | Actions-Minuten — und einen Nacht-Fallback hätte es trotzdem gebraucht. | + | |
| - | + | ||
| - | ==== Lokal prüfen, ohne Zugangsdaten ==== | + | |
| - | + | ||
| - | <code bash> | + | |
| - | gh api repos/< | + | |
| - | -H ' | + | |
| - | GH_TOKEN=$(gh auth token) python -m pygrader50.moodle scores.json --dry-run | + | |
| - | </ | + | |
| - | Alle Optionen: [[.: | + | * [[https:// |
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[.: | ||