Zum Inhalt springen

Zusammenarbeit

Auf main liegt die veröffentlichte Seite. Niemand soll direkt darauf pushen, auch du nicht aus Versehen. GitLab regelt das mit Protected Branches:

  1. Im Projekt Settings → Repository → Protected branches öffnen.
  2. Branch main wählen. Allowed to merge: Maintainers. Allowed to push and merge: No one (oder Maintainers, wenn du allein arbeitest und dir das zu streng ist).
  3. Protect.

Ab jetzt kommt alles über Merge Requests auf main. Ein zweiter Grund ist weniger offensichtlich, und er hat beim Aufbau dieser Plattform eine Stunde gekostet: CI-Variablen, die als «Protected» markiert sind, bekommen nur Pipelines auf geschützten Branches. Ist main nicht geschützt, sind diese Variablen in der Pipeline leer, ohne Fehlermeldung. Mehr dazu in Modul 7.

Wer darf was? GitLab vergibt Rollen pro Projekt oder Gruppe:

Rolle Darf
Guest Issues lesen und schreiben
Reporter Zusätzlich Code lesen
Developer Zusätzlich auf ungeschützte Branches pushen, Merge Requests eröffnen
Maintainer Zusätzlich auf main mergen, Einstellungen und CI-Variablen ändern
Owner Alles, inklusive Löschen

Für eine Lernplattform: Lernende sind Developer. Sie pushen Branches wie lab/04-rechte und eröffnen Merge Requests. Wer den Kurs betreut, ist Maintainer und mergt. Mitglieder trägst du unter Manage → Members ein. Wird die Rolle auf Gruppenebene vergeben, gilt sie für alle Projekte der Gruppe.

GitLab füllt die Beschreibung eines Merge Requests mit einer Vorlage, wenn eine Datei unter .gitlab/merge_request_templates/ liegt:

.gitlab/merge_request_templates/Abgabe.md
## Aufgabe
Modul und Aufgabe:
## Was ich gemacht habe
-
## Wo ich unsicher bin oder Fragen habe
-
## Checkliste
- [ ] Dateien liegen unter `labs/<kurs>/<modul>/` mit dem in der Aufgabe genannten Namen
- [ ] Pipeline ist grün
- [ ] Keine Passwörter oder privaten Schlüssel im Protokoll

Beim Eröffnen eines Merge Requests erscheint die Vorlage im Auswahlfeld «Description». Gibt es nur eine Vorlage, kann man sie als Standard setzen unter Settings → Merge requests → Default description template.

flowchart LR
    A[Branch lab/04-rechte] --> B[Commits, Push]
    B --> C[Merge Request mit Vorlage]
    C --> D{Pipeline grün?}
    D -- nein --> B
    D -- ja --> E[Review durch Maintainer]
    E --> F[Merge auf main]
    F --> G[Deploy]

Die Schritte D und G fehlen noch. Sie kommen in den Modulen 6 und 7.

Hands-on: Schütze main in deinem Projekt, lege die Vorlage an und eröffne einen Merge Request für einen kleinen Branch, zum Beispiel eine Korrektur in der README. Merge ihn über die Oberfläche und hol main lokal mit git pull nach.

Lösung anzeigen

Eine gute AUTOREN.md ist kurz und konkret. Die dieser Plattform hat sechs Abschnitte: Zielgruppe und Ton, technische Basis, Seitenaufbau eines Moduls, Komponenten, Code-Blöcke, Aufgaben und Abgaben, plus eine Anleitung «Neuen Kurs anlegen». Fang mit drei an und ergänze, was beim Schreiben als Frage auftaucht.

Selbstcheck · 3 Fragen

1. Was bewirkt ein geschützter main-Branch?
2. Welche Rolle brauchen Lernende, um Branches zu pushen und Merge Requests zu eröffnen?
3. Was passiert mit «Protected»-CI-Variablen auf einem ungeschützten Branch?