howto:git:classroom50repo

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
howto:git:classroom50repo [2026/08/18 12:38] – Begriff Klassenzimmer durch Classroom ersetzt adminhowto:git:classroom50repo [2026/08/25 10:06] (aktuell) – Veraltet - Inhalt jetzt unter github.com/BZZ-Commons/pygrader50/docs admin
Zeile 1: Zeile 1:
-====== Das classroom50-Repository ====== 
- 
-Jede Klasse hat ein privates Repository ''<ORG>/classroom50''. Es ist die 
-**einzige** Konfigurationsquelle des Classrooms: Aufgaben, Klassenliste, 
-Autograder, Resultate und die Workflows liegen dort. Angelegt wird es von 
-''gh teacher classroom add''. 
- 
-===== Aufbau ===== 
- 
-<code> 
-classroom50/ 
-├── .github/workflows/ 
-│   ├── autograde-runner.yaml     ← zentraler Reusable Workflow (von gh teacher) 
-│   ├── publish-pages.yaml        ← stellt Autograder und Bundles auf GitHub Pages 
-│   ├── collect-scores.yaml       ← sammelt nachts alle Releases ein 
-│   └── moodle-sync.yaml          ← BZZ-eigen: Übertrag nach Moodle 
-└── <CLASSROOM>/                  ← ein Ordner pro Classroom 
-    ├── classroom.json            ← Kurzname und Stammdaten 
-    ├── assignments.json          ← alle Aufgaben, Templates, Termine 
-    ├── roster.csv                ← Klassenliste (Anzeigedaten) 
-    ├── autograder.py             ← Klassen-Default: startet pygrader50 
-    ├── autograders/<SLUG>/       ← optional: Bewertungs-Bundle je Aufgabe 
-    ├── scores.json               ← eingesammelte Resultate 
-    └── moodle-state.json         ← was schon nach Moodle übertragen wurde 
-</code> 
- 
-Ein Repository kann **mehrere** Classrooms enthalten — je einen Ordner. Der 
-Ordnername ist der Kurzname aus ''classroom.json'' und muss nicht dem 
-Organisationsnamen entsprechen. 
- 
-===== Die Pages-Site ===== 
- 
-''publish-pages'' veröffentlicht Teile des Repos unter 
-''https://<ORG>.github.io/classroom50/''. Von dort holt der Runner bei jeder 
-Abgabe: 
- 
-^ Datei ^ URL ^ 
-| Klassen-Default | ''https://<ORG>.github.io/classroom50/<CLASSROOM>/autograder.py'' | 
-| Bewertungs-Bundle | ''https://<ORG>.github.io/classroom50/<CLASSROOM>/autograders/<SLUG>.tar.gz'' | 
-| Aufgabenliste | ''https://<ORG>.github.io/classroom50/<CLASSROOM>/assignments.json'' | 
- 
-<WRAP center round important 90%> 
-Das Klassen-Segment im Pfad ist Pflicht. ''…/classroom50/autograder.py'' **ohne** 
-''<CLASSROOM>/'' liefert 404. Nach einem Push dauert der Deploy rund 30 Sekunden. 
-</WRAP> 
- 
-===== Wie eine Abgabe bewertet wird ===== 
- 
-Im Studi-Repo liegt ''.github/workflows/autograde-runner.yaml''. Die Datei wird 
-beim Anlegen des Repos eingesetzt und ruft nur den **zentralen** Reusable 
-Workflow des Config-Repos auf. Der Lauf wird übersprungen, wenn die 
-Commit-Message ''CLASSROOM 50'' oder ''NOACTION'' enthält. 
- 
-  - Der ''setup''-Job liest ''.classroom50.yaml'' aus dem Studi-Repo und den passenden Eintrag aus ''assignments.json'' der Pages-Site. 
-  - Der ''grade''-Job holt ''runner.py'' von der Pages-Site und startet es. 
-  - ''runner.py'' lädt ''autograders/<SLUG>.tar.gz'' und sucht dann in dieser Reihenfolge: aufgaben-eigenes ''autograder.py'' → aufgaben-eigene ''tests.json'' → ''<CLASSROOM>/autograder.py'' → 0/0. 
-  - An der BZZ greift der dritte Punkt: ''<CLASSROOM>/autograder.py'' installiert [[https://github.com/BZZ-Commons/pygrader50|pygrader50]] in gepinnter Version und startet es im Studi-Checkout. 
-  - ''runner.py'' liest danach ''result.json'', validiert es und publiziert Release und Commit-Status. 
- 
-<WRAP center round tip 90%> 
-Der alte Weg über ''BZZ-Commons/pygrader'' und ''py_autograding.yml'' ist 
-abgelöst. Wer ihn noch in einem Repo findet, siehe 
-[[.:classroom50:migration|Migration von GitHub Classroom]]. 
-</WRAP> 
- 
-===== Bewertungs-Konfiguration ===== 
- 
-Die drei Dateien ''unittests.json'', ''lint.json'' und ''pylintrc'' können 
-entweder im Studi-Repo unter ''.github/autograding/'' liegen (Fallback aus der 
-GitHub-Classroom-Zeit) oder manipulationssicher als Bundle im Config-Repo unter 
-''<CLASSROOM>/autograders/<SLUG>/''. 
- 
-Details und Vorrangregeln: [[.:classroom50:bewertung|Wie bewertet wird]]. 
- 
-===== Sicherheit ===== 
- 
-Der Moodle-Token liegt **nur** hier, nicht in der Studi-Organisation. Der 
-Bewertungs-Job bekommt gar keine Secrets: ''autograde-runner.yaml'' deklariert 
-in seinem ''workflow_call:''-Block nur ''outputs:''. Der Job ist ausdrücklich 
-**keine** Isolationsgrenze gegen selbst hinzugefügte Studi-Workflows — alles 
-Vertrauliche gehört deshalb ins Config-Repo. 
- 
-===== Weiter ===== 
- 
-  * [[.:classroom50:start|Überblick Classroom 50]] 
-  * [[.:classroom50:lehrpersonen|Classrooms und Aufgaben verwalten]] 
-  * [[.:classroom50:einrichtung|Einen Classroom einrichten]] 
-  * [[.:template|Template-Repositories]] 
  
  • howto/git/classroom50repo.1787049527.txt.gz
  • Zuletzt geändert: 2026/08/18 12:38
  • von admin