Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| howto:git:classroom50:moodle_simple [2026/08/25 09:44] – angelegt admin | howto:git:classroom50:moodle_simple [2026/10/01 11:56] (aktuell) – [4. Testen] aprobst | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== | + | ====== |
| - | Der Übertrag läuft | + | <WRAP center round tip 60%> |
| - | **nachts**, | + | Diese Seite erklärt, wie die Noten aus Classroom 50 automatisch ins |
| + | Moodle-Notenbuch kommen. | ||
| + | von Hand starten. | ||
| + | </ | ||
| - | ===== Warum zentral und nachts | + | ===== Voraussetzungen |
| - | Der Moodle-Webservice-Token kann Noten für **beliebige Personen** setzen. In | + | |
| - | einem Studi-Repo liest ihn ein selbst hinzugefügter Workflow | + | * Die Klasse ist erstellt [[.: |
| - | Genau so lief es unter GitHub | + | * Die Assignments sind erstellt |
| - | '' | + | |
| - | Technisch geht es unter Classroom 50 auch gar nicht anders: Der zentrale | + | ===== 1. Workflow |
| - | Reusable | + | |
| - | reicht **keine Secrets** an den Bewertungs-Job durch. | + | |
| - | Nachts statt bei jedem Push, weil der direkte Weg einen Token in jedem | + | '' |
| - | Studi-Repo, eine eigene Workflow-Datei je Repo, eine nachgebaute Skip-Logik | + | mitgeliefert. Du kopierst sie einmal pro Config-Repo von Hand hinein |
| - | rund 33 % mehr Actions-Minuten gekostet hätte | + | Vorlage liegt im Repository [[https:// |
| - | trotzdem nötig gewesen. | + | im Ordner '' |
| - | ===== Voraussetzungen auf der Moodle-Seite ===== | + | |
| + | - Kopiere '' | ||
| + | - Committen. Der Workflow erscheint danach unter **Actions → Moodle Sync**. | ||
| - | - Eine Aktivität vom Typ **External Assignment** ('' | + | <WRAP center round important 60%> |
| - | | + | Den Dateinamen so lassen und **keine bestehende Workflow-Datei** dafür |
| - | - Der **GitHub-Login steht im Moodle-Profil** der lernenden Person, im Feld //GitHub Classroom// — siehe [[howto:git:github_moodle|]]. | + | verwenden: Classroom50 überschreibt seine eigenen Workflows bei einem Update. |
| - | - Die Person ist im Kurs eingeschrieben. | + | </ |
| - | Welches Profilfeld gelesen wird, steht in der Plugin-Einstellung | + | Die Datei gilt für **alle** Klassen im Repo — eine Kopie genügt, auch bei |
| - | '' | + | mehreren Klassenordnern. |
| - | Das Plugin sucht ausschliesslich in diesem Feld — der Moodle-Benutzername ist | + | |
| - | für die Zuordnung | + | |
| - | <WRAP center round important 90%> | + | ===== 2. Zugangsdaten hinterlegen ===== |
| - | Zwei Fehlermeldungen, | + | |
| - | ^ Meldung ^ Bedeutung ^ | + | Ebenfalls im Repo '' |
| - | | '' | + | Actions**: |
| - | | '' | + | |
| - | Zum Testen deshalb einen echten Studi-Login nehmen — der eigene Lehrer-Account | + | ^ Art ^ Name ^ Wert ^ |
| - | ist im Kurs meist kein Teilnehmer. | + | | Secret | '' |
| - | </WRAP> | + | | Variable | '' |
| - | ===== Zugangsdaten ===== | + | Oder im Terminal: |
| - | + | ||
| - | Im **classroom50-Repo**, | + | |
| - | + | ||
| - | ^ Art ^ Name ^ Wert ^ | + | |
| - | | Secret | '' | + | |
| - | | Variable | '' | + | |
| - | | Variable | '' | + | |
| <code bash> | <code bash> | ||
| Zeile 57: | Zeile 48: | ||
| </ | </ | ||
| - | Für den Token einen **eigenen Webservice-Benutzer** anlegen, der nur diese eine | + | <WRAP center round important 60%> |
| - | Funktion darf. Je enger die Rechte, desto kleiner der Schaden bei einem Leck. | + | Der Token gehört |
| + | Lernenden — damit lassen sich Noten für beliebige Personen setzen. | ||
| + | </ | ||
| - | ===== Was übertragen wird ===== | + | ===== 3. Zuordnung prüfen |
| - | Je Kombination aus Aufgabe und Person geht die **neueste** Abgabe raus. | + | Damit eine Note ankommt, muss die Person in Moodle gefunden werden: |
| - | ^ Moodle-Feld | + | - Die lernende Person hat ihren **GitHub-Login im Moodle-Profil** eingetragen, |
| - | | '' | + | - Die Person |
| - | | '' | + | - Die Aktivität //external assignment// heisst **exakt wie der Slug** der Aufgabe, z.B. '' |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | ===== Zeitplan ===== | + | Der Moodle-Benutzername spielt keine Rolle — gesucht wird nur im Profilfeld. |
| - | ^ Job ^ Zeit ^ Was er tut ^ | + | ===== 4. Testen ===== |
| - | | '' | + | |
| - | | '' | + | |
| - | 40 Minuten Abstand, damit '' | + | Im Repo '' |
| - | + | Häkchen bei '' | |
| - | Ein Zustandsfile ''< | + | |
| - | übertragen wurde. Übersprungen wird nur, wenn Abgabe **und** Punktzahl | + | |
| - | identisch sind — eine Nachbewertung derselben Abgabe geht also erneut raus. | + | |
| - | + | ||
| - | ===== Von Hand auslösen ===== | + | |
| - | + | ||
| - | Im classroom50-Repo | + | |
| - | Eingaben: Classroom, optional Aufgabe und Login, dazu die Schalter | + | |
| - | '' | + | |
| - | mit einer '' | + | |
| - | + | ||
| - | <code bash> | + | |
| - | gh workflow run moodle-sync.yaml --repo < | + | |
| - | -f classroom=< | + | |
| - | </ | + | |
| - | + | ||
| - | Trockenlauf-Ausgabe: | + | |
| < | < | ||
| Zeile 104: | Zeile 75: | ||
| </ | </ | ||
| - | ===== Lokal prüfen, ohne Zugangsdaten ===== | + | Sieht das gut aus, dasselbe |
| + | Einrichtung fertig. | ||
| - | <code bash> | + | <WRAP center round important 60%> |
| - | gh api repos/<ORG>/classroom50/ | + | Zum Testen einen **echten Login einer lernenden Person** nehmen. Der eigene |
| - | | + | Lehrer-Account ist im Kurs meist kein Teilnehmer — der Test scheitert dann, |
| - | GH_TOKEN=$(gh auth token) python -m pygrader50.moodle scores.json --dry-run | + | obwohl alles richtig eingerichtet ist. |
| - | </ | + | </WRAP> |
| + | {{: | ||
| + | |||
| + | ===== Ab jetzt automatisch ===== | ||
| + | |||
| + | ^ Wann ^ Was ^ | ||
| + | | nachts | Classroom 50 sammelt alle Abgaben ein | | ||
| + | | 04:57 | '' | ||
| + | |||
| + | Ü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 | ||
| + | '' | ||
| + | |||
| + | ===== Wenn etwas nicht klappt ===== | ||
| - | Alle Optionen: | + | ^ 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 '' | ||
| - | ===== Probleme | + | ===== Details |
| - | ^ Meldung / Symptom ^ Ursache ^ | + | |
| - | | '' | + | * [[https:// |
| - | | '' | + | * [[https:// |
| - | | Note kommt nicht an, Log sagt „unverändert" | + | * [[.:hilfe|Hilfe und Dokumentation]] — Übersicht über die ganze Dokumentation |
| - | | Nachtlauf jede Nacht rot, immer dieselbe Person | Karteileichen-Eintrag in '' | + | |