Tracks erstellen


Ein Track besteht aus vielen verschiedenen Teilen.

Metadaten

Die Konfiguration und die Metadaten des Tracks stehen in der Datei config.json. Sie listet die Übungen, die Konzepte und die Editor-Einstellungen des Tracks auf und noch vieles mehr. Schau dir die Dokumentation zu config.json an.

Konzepte

Alle Konzept- und Praxisübungen eines Tracks drehen sich um Konzepte. Diese Konzepte sind eigenständige Einheiten. Weitere Informationen findest du in der Dokumentation.

Die Konzepte, die in den Konzeptübungen des Tracks vermittelt werden, bilden einen Lehrplan. Der Lehrplan wird den Lernenden als Konzeptkarte angezeigt. In der Konzeptkarten-Dokumentation erfährst du, wie du die Konzeptkarte für einen Lehrplan aufbaust.

Wie du einen Lehrplan entwirfst, erfährst du in der Dokumentation zum Lehrplan.

Übungen

Tracks haben zwei Arten von Übungen:

  • Konzeptübungen: Sie sind darauf ausgelegt, einem Lernenden ein oder mehrere Konzepte beizubringen. Weitere Informationen findest du in der Dokumentation.
  • Praxisübungen: Sie sind darauf ausgelegt, gelernte Konzepte zu üben. Weitere Informationen findest du in der Dokumentation.

Dig deeper

Jede Übung hat einen optionalen „Dig Deeper“-Bereich, der Folgendes enthalten kann:

  • Ansätze: verschiedene Wege, die Übung zu lösen
  • Artikel: beschreiben interessante Aspekte der Übung
  • Community-Videos: Videos, in denen die Übung vorgestellt wird, meistens indem jemand die Übung von Grund auf löst

Gemeinsame Dateien

Manche Dateien gehören nicht zu einzelnen Übungen, sondern gelten für alle Übungen. Weitere Informationen findest du in der Dokumentation.

Dokumentation

Jeder Track hat einige erforderliche Dokumentationsdateien. Weitere Informationen findest du in der Dokumentation.

Widgets

Einige Teile des Tracks lassen sich in Widgets anzeigen.

Styleguide

Alle Dokumente sollten sich an den Styleguide halten. Markdown-Dokumente sollten außerdem unseren Markdown-Standards entsprechen.

Beispiel

csharp
├── config
|   ├── exercise_readme.go.tmpl
|   └── maintainers.json
├── docs
|   ├── ABOUT.md
|   ├── INSTALLATION.md
|   ├── LEARNING.md
|   ├── RESOURCES.md
|   └── TESTS.md
├── concepts
|   └── numbers
|       ├── about.md
|       ├── introduction.md
|       └── links.json
└── exercises
|   ├── concept
|   |   └── cars-assemble
|   |       ├── .docs
|   |       |   ├── hints.md
|   |       |   ├── introduction.md
|   |       |   └── instructions.md
|   |       ├── .meta
|   |       |   ├── config.json
|   |       |   ├── design.md
|   |       |   └── Exemplar.cs (track-specific)
|   |       ├── CarsAssemble.cs (track-specific)
|   |       ├── CarsAssemble.csproj (track-specific)
|   |       └── CarsAssembleTests.cs (track-specific)
|   ├── practice
|   |   └── leap
|   |       └── .docs
|   |       |   └── instructions.md
|   |       └── .meta
|   |       |   ├── config.json
|   |       |   └── Example.cs (track-specific)
|   |       ├── Leap.cs (track-specific)
|   |       ├── Leap.csproj (track-specific)
|   |       └── LeapTests.cs (track-specific)
|   └── shared
|       └── .docs
|           ├── debug.md
|           ├── help.md
|           └── tests.md
└── config.json

Wartung

Repo-Berechtigungen

Jedem Track wird (automatisch) eine Wartungskategorie zugewiesen, die die GitHub-Repo-Berechtigungen der Maintainer des Tracks festlegt.

Unnötige Testläufe vermeiden

Wenn du einen Track-PR mergst, der eine Übung berührt, führt das dazu, dass die neuesten veröffentlichten Iterationen aller Lösungen von Lernenden erneut getestet werden. Bei beliebten Übungen ist das eine sehr teure Angelegenheit (70.000 Testläufe für Python Hello World, im Extremfall!).

Wir möchten dich ermutigen, das nach Möglichkeit nicht unnötig auszulösen.

Lösungen werden nicht erneut getestet, wenn der gemergte Commit entweder:

  • nur Dateien in .docs oder .meta oder andere Dateien berührt, mit denen Nutzende nicht in Berührung kommen
  • oder [no important files changed] im Commit-Text enthält.

Lösungen werden erneut getestet, wenn der gemergte Commit beides erfüllt:

  • [no important files changed] im Commit-Text fehlt
  • und eine der folgenden Dateien einer Übung berührt (wie in ihrer Datei .meta/config.json angegeben):
    • Testdateien
    • Editor-Dateien
    • Invalidator-Dateien

Ein paar Beispiele:

  • Python#3423: Berührt nur Docs, also wurden keine Tests ausgeführt
  • Python#3437: Wurde mit hinzugefügtem [no important files changed] gemergt, also wurden keine Tests ausgeführt
  • Csharp#2138: Leerzeichen wurden aus den Tests entfernt. Das Schlüsselwort wurde nicht hinzugefügt. Die Tests wurden unnötigerweise erneut ausgeführt.