Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| howto:git:classroom50:migration [2026/08/18 12:21] – Sync aus BZZ-Commons/pygrader50: Moodle-Zuordnung über das Profilfeld korrigiert admin | howto:git:classroom50:migration [2026/08/25 10:07] (aktuell) – Veraltet - Inhalt jetzt unter github.com/BZZ-Commons/pygrader50/docs admin | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Migration von GitHub Classroom auf Classroom 50 ====== | ||
| - | |||
| - | Diese Seite beschreibt, was beim Umstieg einer bestehenden Klasse zu tun ist. | ||
| - | Ein neues Klassenzimmer von Grund auf: [[.: | ||
| - | |||
| - | <WRAP center round important 90%> | ||
| - | Solange beide Wege parallel installiert sind, laufen bei **jedem Push zwei | ||
| - | Autograder** nebeneinander — der alte scheitert dabei am Moodle-Aufruf. Die | ||
| - | Migration ist erst mit Schritt 2 abgeschlossen. | ||
| - | </ | ||
| - | |||
| - | ===== Was sich ändert ===== | ||
| - | |||
| - | ^ ^ vorher ^ nachher ^ | ||
| - | | Bewertung ausgelöst von | '' | ||
| - | | Bewertungs-Logik | '' | ||
| - | | Moodle-Übertrag | direkt aus dem Studi-Repo | nachts, zentral aus dem Config-Repo | | ||
| - | | Moodle-Token | in der Org, per '' | ||
| - | | Zuordnung zu Moodle | GitHub-Name im Moodle-Profil | unverändert, | ||
| - | | Konfigurationsdateien | '' | ||
| - | |||
| - | Die drei Dateien '' | ||
| - | Format. Es ist **kein** Umschreiben der Aufgaben nötig. | ||
| - | |||
| - | ===== 1. Klassen-Default setzen ===== | ||
| - | |||
| - | Erst wenn ''< | ||
| - | Classroom 50 überhaupt etwas — vorher liefert es überall '' | ||
| - | |||
| - | Ablauf und Prüfungen: [[.: | ||
| - | |||
| - | ===== 2. Alten Workflow entfernen ===== | ||
| - | |||
| - | ==== 2.1 Was raus muss ==== | ||
| - | |||
| - | '' | ||
| - | |||
| - | ^ Job ^ Was damit passiert ^ | ||
| - | | '' | ||
| - | | '' | ||
| - | |||
| - | Ein separates '' | ||
| - | manuell. Beim Löschen von '' | ||
| - | verloren**. | ||
| - | |||
| - | ==== 2.2 Was bleiben muss ==== | ||
| - | |||
| - | '' | ||
| - | — das ist der Fallback, solange nicht jede Aufgabe ein Bundle im Config-Repo | ||
| - | hat. | ||
| - | |||
| - | '' | ||
| - | Bewertung nicht: pygrader50 installiert die Studi-Abhängigkeiten bewusst nicht. | ||
| - | Für die lokale Arbeit der Lernenden zählt die Datei trotzdem, deshalb hält sie | ||
| - | ein eigenes Skript aktuell — siehe | ||
| - | [[.: | ||
| - | |||
| - | ==== 2.3 Die Zielliste richtig bilden ==== | ||
| - | |||
| - | <WRAP center round important 90%> | ||
| - | **Nicht** die Repos der Template-Organisation auflisten. Dort liegen auch | ||
| - | Templates von Modulen, die noch auf dem alten Pfad laufen — ihnen den Workflow | ||
| - | zu nehmen, stoppt dort **still** die Bewertung. | ||
| - | </ | ||
| - | |||
| - | Massgeblich ist der '' | ||
| - | |||
| - | <code bash> | ||
| - | gh api repos/< | ||
| - | -H ' | ||
| - | | jq -r ' | ||
| - | </ | ||
| - | |||
| - | ==== 2.4 Ausführen ==== | ||
| - | |||
| - | <code bash> | ||
| - | scripts/ | ||
| - | scripts/ | ||
| - | </ | ||
| - | |||
| - | Das Skript nimmt die Liste aus 2.3 und ergänzt die bereits angenommenen | ||
| - | Studi-Repos. Es ist wiederholbar; | ||
| - | |||
| - | **Template-Änderungen erreichen bestehende Repos nicht.** Ein Studi-Repo trägt | ||
| - | seine Kopie aus dem Moment der Annahme — deshalb behandelt das Skript beide | ||
| - | Seiten. Umgekehrt sind Repos früherer Klassen, die dasselbe Template benutzt | ||
| - | haben, von der Template-Änderung nicht betroffen. | ||
| - | |||
| - | ===== 3. Alten Moodle-Token entwerten ===== | ||
| - | |||
| - | <WRAP center round important 90%> | ||
| - | **Sicherheitsrelevant.** Der alte Workflow reichte den Moodle-Token per | ||
| - | '' | ||
| - | Schreibrecht auf ein Studi-Repo konnte ihn mit drei Zeilen auslesen — und der | ||
| - | Token kann Noten für beliebige Personen setzen. | ||
| - | </ | ||
| - | |||
| - | - Secret in **allen** betroffenen Organisationen löschen — typischerweise die Studi-Org //und// die Template-Org. Namen prüfen: es gibt '' | ||
| - | - Den Token **in Moodle neu erzeugen und den alten invalidieren.** Löschen allein beendet nur die künftige Exposition, nicht die vergangene. | ||
| - | |||
| - | <code bash> | ||
| - | gh secret list --org <ORG> | ||
| - | </ | ||
| - | |||
| - | ===== 4. Moodle-Seite umstellen ===== | ||
| - | |||
| - | Hier ändert sich **nichts**: Die Lernenden tragen ihren GitHub-Namen weiterhin | ||
| - | im Moodle-Profil ein, Feld //GitHub Classroom// | ||
| - | ([[howto: | ||
| - | '' | ||
| - | Moodle-Benutzername spielt keine Rolle. Vor dem ersten echten Übertrag prüfen, | ||
| - | ob das Feld bei allen Teilnehmenden gefüllt und richtig geschrieben ist. | ||
| - | |||
| - | Der Rest — Aktivität //External Assignment//, | ||
| - | Config-Repo — steht unter [[.: | ||
| - | |||
| - | ===== 5. Prüfen, dass wirklich umgestellt ist ===== | ||
| - | |||
| - | * In einem Studi-Repo pushen: Es startet **genau ein** Bewertungslauf. | ||
| - | * Das Release zeigt eine echte Punktzahl, nicht '' | ||
| - | * '' | ||
| - | * Ein '' | ||