Wiki source code of GitLab Erklärungen

Version 84.14 by sbeyer1 on 2025/08/25 11:50

Hide last authors
Marco Grawunder 84.1 1 [[image:Main.Organisatorisches.WebHome@softwareprojekt_logo_transparent.png||alt="SoftwareprojektLogo.png" data-xwiki-image-style-alignment="end" height="136" width="309"]]
2
Pascal Meyer 12.1 3 {{toc/}}
4
Pascal Meyer 4.2 5 Ab dem Wintersemester 2025/2026 wird die Projektstrukturierung und der [[Scrum>>doc:Main.Scrum.WebHome]]-Prozess in GitLab durchgeführt. Für die wichtigsten, grundlegendsten Funktion gibt es nachfolgend als Einstiegshilfe einige Erklärungen.
Pascal Meyer 1.3 6
7 = Issue/Task-Erstellung in GitLab =
8
Pascal Meyer 6.2 9 Für die Erstellung von Issues (User-Stories) oder Tasks (Aufgaben) wird in der Projektnavigationsleiste der Reiter** "Issues" **angeklickt und nachfolgend die Option **"New issue"** ausgewählt.
Pascal Meyer 4.2 10
Pascal Meyer 34.1 11 [[image:Issue1.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 4.2 12
Pascal Meyer 5.2 13 Anschließend öffnet sich ein neues Fenster mit vielen Option. Hierbei kann ein Typ, ein Titel, eine Beschreibung und viele weitere unterschiedlichen Funktionen festgelegt werden.
Pascal Meyer 4.2 14
Pascal Meyer 6.1 15 Als **"Type" **stehen drei Optionen zur Auswahl:
Pascal Meyer 5.2 16
Pascal Meyer 6.1 17 * "Incident" - Ein Zwischenfall/Störung
18 * "Issue" - Im SWP eine User-Story (siehe [[User-Stories>>doc:Main.Scrum.WebHome||anchor="HUserStories"]])
Pascal Meyer 6.2 19 * "Task" - Eine Aufgabe
Pascal Meyer 5.2 20
Pascal Meyer 7.1 21 Im unten gezeigtem Beispiel wird ein Issue gewählt und mit einem Titel (Name der User-Story) und einer Beschreibung (Akzeptanzkriterien) versehen.
Pascal Meyer 6.1 22
Pascal Meyer 8.2 23 Zusätzlich ist es möglich den Status (bspw. "To do", "Done", "In progress" etc), den Bearbeiter (ein oder mehrere Gruppenmitglieder), ein oder mehrere Labels, einen Meilenstein (siehe: ), Schätzungen und viele weitere Funktionen einzustellen. Anschließend werden die Angaben mit dem **"Create issue"** Button bestätigt.
Pascal Meyer 6.1 24
Pascal Meyer 34.1 25 [[image:Issue2.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 11.1 26
27 Es besteht im Anschluss direkt die Option sogenannte **"Child items"** hinzuzufügen. Dies ist besonders sinnvoll wenn die User-Story relativ umfangreich ist und somit besser in kleinere Arbeitspakete (bzw. Aufgaben) zerteilt werden sollte. Hierfür wird der **"Add"**-Button und entweder **"New task"** oder **"Existing task"** ausgewählt. Somit können entweder neue Aufgaben formuliert (wie im kommenden Beispiel) oder bestehende hinzugefügt werden.
Pascal Meyer 7.2 28
Pascal Meyer 34.1 29 [[image:Issue3.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 7.2 30
Pascal Meyer 11.1 31 Hier wurde als Aufgabe das Feld für die Eingabe definiert. Anschließend wurde die Eingabe mit **"Create task"** bestätigt.
32
Pascal Meyer 33.6 33 [[image:Issue4.png||data-xwiki-image-style-border="true"]]
34
Pascal Meyer 11.1 35 Nachdem alle Informationen eingepflegt und ausführlich beschrieben wurden, ist das Issue vorerst fertig.
36
Pascal Meyer 33.6 37 [[image:Issue5.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 13.2 38
Pascal Meyer 52.5 39 == Status bei Issues ==
40
Pascal Meyer 52.6 41 In GitLab werden standardmäßig fünf verschiedene Statusformen angeboten. Diese Optionen sind:
Pascal Meyer 52.5 42
Pascal Meyer 52.6 43 * **To do** (wird bei der Issue Erstellung standardmäßig ausgewählt)
44 * **In progress**
45 * **Done**
46 * **Won't do**
47 * **Duplicate**
48
49 Diese Statusformen werden genutzt um eine Sortierung und/oder Priorisierung der Issues zu ermöglichen. Zusätzlich dienen diese aber auch als Orientierung für das gesamte Projektteam. Somit weiß jedes Gruppenmitglied was erledigt ist und was noch erledigt werden muss.
50
Pascal Meyer 53.2 51 [[image:Issue Status 1.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 52.6 52
Pascal Meyer 56.1 53 Zur Status Änderung wird einfach die **"Edit"**-Option betätigt und anschließend öffnet sich ein Optionsmenü. Die gewünschte Option muss nur noch bestätigt werden und der neue Status wird festgelegt.
Pascal Meyer 52.6 54
Pascal Meyer 55.2 55 [[image:Issue Status 2.png||data-xwiki-image-style-border="true"]]
56
57 [[image:Issue Status 3.png||data-xwiki-image-style-border="true"]]
58
Pascal Meyer 56.2 59 == Meilensteine und Epics ==
60
Pascal Meyer 58.2 61 Im Laufe des Softwareprojektes werden eine Menge an Issues erstellt. Damit der Überblick, über die Vielzahl an Issues, nicht verloren geht wird im Softwareprojekt mit Meilensteinen (siehe [[Meilensteine>>doc:Main.Anforderungen Software.WebHome||anchor="HAnforderungen:DievordefiniertenMeilensteine"]]) und Epics gearbeitet. In GitLab werden beide Funktionen mit **"Labels"** umgesetzt. Diese Option ist im Reiter "Manage" und anschließend unter "Labels" vorzufinden.
Pascal Meyer 56.2 62
Pascal Meyer 58.2 63 [[image:Label 1.png||data-xwiki-image-style-border="true"]]
64
Pascal Meyer 60.2 65 [[image:Label 2.png||data-xwiki-image-style-border="true"]]
66
67 [[image:Label 3.png||data-xwiki-image-style-border="true"]]
68
Pascal Meyer 60.3 69 Die Erstellung von Epics sind kongruent zur Erstellung der Meilensteine-Label**. **Zur Veranschaulichung wird das Epic-Label **"Lobby" **erstellt.
Pascal Meyer 60.2 70
Pascal Meyer 63.2 71 [[image:Epic1.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 60.3 72
Pascal Meyer 63.2 73 [[image:Epic2.png||data-xwiki-image-style-border="true"]]
74
75 [[image:Epic3.png||data-xwiki-image-style-border="true"]]
76
Pascal Meyer 68.1 77 Bei der Issue-Erstellung/Bearbeitung können die erstellten Labels jetzt mit den neuen/bestehenden Issues verknüpft werden. Dies erfolgt trivial zur Status-Option.
Pascal Meyer 63.2 78
Pascal Meyer 68.1 79 [[image:Issue Label 2.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 63.3 80
Pascal Meyer 68.1 81 [[image:Label 4.png||data-xwiki-image-style-border="true"]]
82
83 [[image:Issue Label 3.png||data-xwiki-image-style-border="true"]]
84
Pascal Meyer 13.2 85 = Product-Backlog =
86
Pascal Meyer 33.6 87 Die erstellten Issues werden automatisch nach der Erstellung dem Product-Backlog (siehe [[Product-Backlog>>doc:Main.Scrum.WebHome||anchor="HProductBacklog"]]) hinzugefügt. Der Product-Backlog ist eine Liste mit allen erstellten und unbearbeiteten Issues. Dieser ist im GitLab unter dem Reiter **"Issue boards" **vorzufinden.
Pascal Meyer 17.1 88
Pascal Meyer 33.6 89 [[image:ProductBacklog1.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 17.1 90
Pascal Meyer 33.6 91 [[image:ProductBacklog2.png||data-xwiki-image-style-border="true"]]
92
Pascal Meyer 68.2 93 == Pflege/Priorisierung des Product-Backlogs ==
94
Pascal Meyer 18.2 95 Die Pflege des Product-Backlogs (siehe [[Pflege>>doc:Main.Scrum.WebHome||anchor="HDerNutzeneinesgepflegten2FpriorisiertenProductBacklogs"]]) ist in GitLab sehr einfach durchzuführen. Hierfür werden die Issues einfach per "Drag and Drop" (Ziehen und Ablegen) in die gewünschte Ordnung bzw. Priorisierung gebracht. Im ersten Beispiel war die Reihenfolge der Issues #1,#3,#4,#5,#6,#7 und für das Projekt unsortiert. Nach der Sortierung ist die Reihenfolge der Issues #7,#6,#5,#4,#3,#1 (Sortierung willkürlich gewählt und dient nur zu Anschauungszwecke).
Pascal Meyer 17.1 96
Pascal Meyer 33.5 97 [[image:ProductBacklog3.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 17.1 98
Pascal Meyer 70.2 99 == Erstellung neuer Listen ==
100
Pascal Meyer 78.2 101 In GitLab können die Listen auch genutzt werden um beispielsweise Meilensteine oder Epics darzustellen (siehe [[Meilensteine und Epics>>doc:Main.GitLab.WebHome||anchor="HMeilensteineundEpics"]]). Auch der Status der Issues kann dargestellt werden (siehe [[Status>>doc:Main.GitLab.WebHome||anchor="HStatusbeiIssues"]]). Hierfür wird einfach die **"New list"**-Funktion genutzt.
Pascal Meyer 70.2 102
Pascal Meyer 80.2 103 [[image:Liste1.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 78.2 104
Pascal Meyer 82.1 105 In der sich öffnenden Option wird jetzt der Status **"in progress**" ausgewählt und mit der **"Add to board"**-Funktion bestätigt.
Pascal Meyer 78.2 106
Pascal Meyer 80.2 107 [[image:Liste2.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 78.2 108
Pascal Meyer 80.2 109 [[image:Liste3.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 78.2 110
Pascal Meyer 82.1 111 Zusätzlich werden zur Veranschaulichung Listen für die Meilensteine- und Epic-Label erstellt.
Pascal Meyer 78.2 112
Pascal Meyer 80.2 113 [[image:Liste4.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 78.2 114
Pascal Meyer 80.2 115 [[image:Liste5.png||data-xwiki-image-style-border="true"]]
116
117 [[image:Liste6.png||data-xwiki-image-style-border="true"]]
118
Pascal Meyer 18.3 119 = Erstellung eines Sprints =
Pascal Meyer 17.1 120
Pascal Meyer 20.2 121 In GitLab erfolgt die Erstellung eines Sprints in sogenannten **"Milestones"** (Meilensteine). Diese Option ist in der Projektnavigationsleiste unter dem Reiter **"Milestones" **vorzufinden. Um einen neuen Sprint zu erstellen wird die **"New Milestone"**-Option ausgewählt.
Pascal Meyer 18.2 122
Pascal Meyer 33.5 123 [[image:Sprint1.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 18.3 124
Pascal Meyer 20.4 125 Damit ein neuer Sprint erstellt werden kann, wird der Sprint mit einem Titel, einem Start- sowie Enddatum und einer Beschreibung versehen. Das Sprintziel sollte in der Beschreibung festgehalten werden. Im unten aufgeführten Beispiel ist die Registrierung und die Anmeldung das angestrebte Sprintziel. Gespeichert wird der Sprint durch die "**Create milestone"**-Funktion
Pascal Meyer 20.2 126
Pascal Meyer 33.5 127 [[image:Sprint2.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 20.2 128
Pascal Meyer 33.4 129 [[image:Sprint3.png||data-xwiki-image-style-border="true"]]
130
Pascal Meyer 69.2 131 == Sprint-Backlog ==
132
Pascal Meyer 24.2 133 Jetzt wurde erfolgreich ein Sprint erstellt. Jedoch fehlen bisher noch die Issues die benötigt werden um das Sprintziel zu erreichen. Dafür wird erneut der Reiter **"Issue boards" **(der Product-Backlog) angesteuert. Anschließend wird die Funktion **"New list"** ausgewählt.
Pascal Meyer 20.2 134
Pascal Meyer 33.4 135 [[image:Sprint4.1.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 20.3 136
Pascal Meyer 24.4 137 Hierbei werden wieder verschiedene Optionen angeboten. Für die Erstellung eines Sprints bzw. der Durchführung der Sprintplanung, wird die Option **"Milestone"** und der eben erstellte Sprint als **"Value"** ausgewählt. Anschließend wird der Vorgang durch die **"Add to board"**-Funktion bestätigt.
Pascal Meyer 22.1 138
Pascal Meyer 33.4 139 [[image:Sprint5.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 22.3 140
Pascal Meyer 33.3 141 [[image:Sprint6.1.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 24.2 142
Pascal Meyer 27.5 143 Somit wurde erfolgreich ein sogenannter **Sprint-Backlog** (siehe [[Informationen zu Scrum>>doc:Main.Scrum.WebHome]]) erstellt. In der Sprint-Planungsphase wird vom kompletten Projektteam festgelegt, welche Issues im Sprint umgesetzt werden sollen um das selbst definierte Sprint-Ziel zu erreichen. Nachdem das Team sich geeinigt hat, werden die Issues aus dem Product-Backlog, per "Drag and Drop" (Ziehen und Ablegen) in dem Sprint-Backlog abgelegt.
Pascal Meyer 24.2 144
Pascal Meyer 33.3 145 [[image:Sprint8.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 24.3 146
Pascal Meyer 69.2 147 == Schätzungen ==
Pascal Meyer 26.1 148
Pascal Meyer 69.2 149 Anschließend müssen die Issues geschätzt werden (siehe [[Schätzen>>doc:Main.Scrum.WebHome||anchor="HSchE4tzenvonAufwE4nden"]]). Dieser Vorgang dient der Schärfung des Verständnisses des gesamtem Projektteams. Hierbei ist es wichtig sich auf eine Werteskala (bspw. Fibonacci) zu einigen (diese sollte über die gesamte Projektdauer beibehalten werden). Die Ergebnisse werden dann direkt in den Issues unter dem Punkt "Weight" festgehalten.
150
Pascal Meyer 33.3 151 [[image:SprintS.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 27.5 152
Pascal Meyer 30.3 153 Die Sprint-Planung ist somit abgeschlossen und der fertiggestellte Sprint ist unter dem Reiter **"Milestones" **vorzufinden.
Pascal Meyer 30.2 154
Pascal Meyer 33.2 155 [[image:SprintE.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 30.3 156
Pascal Meyer 32.2 157 [[image:SprintF.png||data-xwiki-image-style-border="true"]]
158
Pascal Meyer 36.2 159 = Erstellung eines Wikis =
160
Pascal Meyer 83.1 161 Im Softwareprojekt müssen viele Daten dokumentiert (siehe [[Anforderungsanalyse>>doc:Main.Aufgabenstellung.WebHome||anchor="Teilaufgabe2:Anforderungsanalyse28Dokumentation29"]] und [[Entwurf>>doc:Main.Aufgabenstellung.WebHome||anchor="HTeilaufgabe3:Entwurf28Dokumentation29"]] sowie [[Dokumentation>>doc:Main.Anforderungen Software.WebHome||anchor="HAnforderungen:Dokumentation"]]) werden und unter anderem auch ein Projekttagebuch (siehe [[Projekttagebuch>>doc:Main.Anforderungen Gruppen.WebHome||anchor="HProjekttagebuch"]] geführt werden. Dies wird in der Wiki-Funktion von GitLab umgesetzt. Diese Option ist in der Projektnavigationsleiste unter dem Reiter **"Wiki" **vorzufinden.
Pascal Meyer 37.2 162
163 [[image:Wiki1.png||data-xwiki-image-style-border="true"]]
164
Pascal Meyer 38.2 165 [[image:Wiki2.png||data-xwiki-image-style-border="true"]]
166
Pascal Meyer 39.3 167 Im GitLab-Wiki muss die erste Seite die sogenannte **"Home"**-Seite sein. Sonst wird das Wiki nicht korrekt erzeugt. Die Seite wird mit der **"Create page"**-Funktion erstellt.
Pascal Meyer 39.2 168
169 [[image:Wiki3.png||data-xwiki-image-style-border="true"]]
Pascal Meyer 39.4 170
Pascal Meyer 43.1 171 Um weitere Seiten zu erstellen, wird in der "Page"-Hierachie das "+" unter Home ausgewählt. Nach Erstellung der neuen Seite, wird diese wieder mit der **"Create page"**-Funktion erstellt.
Pascal Meyer 39.5 172
Pascal Meyer 40.2 173 [[image:Wiki4.png||data-xwiki-image-style-border="true"]]
174
Sebastian Beyer 51.1 175 (% class="wikigeneratedid" id="H" %)
176 [[image:Wiki5.png||data-xwiki-image-style-border="true"]]
Sebastian Beyer 45.2 177
178 = Zeiterfassung in GitLab =
179
Sebastian Beyer 52.3 180 Im Rahmen des Softwareprojekts sollt ihr eure Arbeitszeit präzise festhalten. Dazu könnt ihr direkt auf angelegten Issues/Tasks/User Stories in dem Bereich **Time tracking** eure Arbeitszeit Aufgabenspezifisch eintragen. In dem Fenster könnt ihr eintragen wie viel Zeit ihr gearbeitet habt, an welchem Tag ihr gearbeitet habt, um nachträgliches verbuchen von Arbeitszeit zu ermöglichen, und eine kleine Zusammenfassung angeben. Sollte bereits Zeit erfasst worden sein, muss über das Plus (siehe Bild oben rechts im roten Rahmen) Zeit gebucht werden.[[image:1754139824426-497.png]]
sbeyer1 84.2 181
182 ----
183
sbeyer1 84.4 184 = GitLab Pipelines =
185
sbeyer1 84.5 186 Eine GitLab Pipeline ist eine in //.gitlab-ci.yml// definierte Abfolge von Jobs. Jobs können dabei beispielsweise die automatische Ausführung von Tests sein.
187
sbeyer1 84.6 188 == Pipeline im Basisprojekt v2 ==
sbeyer1 84.5 189
sbeyer1 84.10 190 Die Pipeline im Basisprojekt ist auf zwei Stages mit jeweils einem Job aufgeteilt und wird im Folgenden Schritt für Schritt erklärt. Ihr dürft im Rahmen des Softwareprojekts, wenn nötig, die Pipeline um weitere Jobs oder Stages erweitern. **Die bestehenden Jobs sollten allerdings **(von Studierenden) **nicht geändert werden.**
sbeyer1 84.6 191
sbeyer1 84.12 192 In der //.gitlab-ci.yml //werden zunächst die Stages definiert. Eine Stage ist eine logische Gruppe von Jobs, die in einem bestimmten Abschnitt der Pipeline ausgeführt werden. Jobs in einer Stage werden parallel ausgeführt, es sei denn es wird eine Abhängigkeit in den Jobs definiert.
193 Wenn alle Jobs in einer Stage (erfolgreich) abgeschlossen sind, startet die nächste Stage. Schlägt ein Job fehl wird die gesamte Pipeline gestoppt, außer es werden Jobs so markiert, dass sie fehlschlagen dürfen.
sbeyer1 84.10 194
sbeyer1 84.6 195 {{code language="yaml"}}
196 stages:
197 - verify
198 - deploy
199 {{/code}}
sbeyer1 84.12 200
sbeyer1 84.14 201 Der //verify-job //ist der erste Job, der in der Pipeline definiert ist. Er wird in der //verify-//Stage ausgeführt. Das Image ist ein Docker-Image, welches schon mit einer Java 21 Umgebung eingerichtet ist. Dadurch wird sichergestellt, dass der Job immer die gleiche Umgebung hat ("//but it works on my machine"//).
202 Im Script-Abschnitt wird dann mvn clean verify ausgeführt. Maven verify baut das Projekt und führt die Tests im Projekt aus.
203 Die Rules definieren, wann ein Job ausgeführt wird und ob das Fehlschlagen des Jobs erlaubt ist. Regeln werden von oben nach unten ausgewertet. //$CI_PIPELINE_SOURCE == "schedule" //sagt dass der Job bei automatischen Aufrufen über einen zeitgesteuerten Start der Pipeline mit besonderen Einschränkungen ausgeführt werden soll. //allow_failure//
sbeyer1 84.12 204
205 {{code language="yaml"}}
206 verify-job:
207 stage: verify
208 image: eclipse-temurin:21-jdk-alpine
209 script:
210 - "./mvnw clean verify"
211 rules:
212 - if: $CI_PIPELINE_SOURCE == "schedule"
213 when: always
214 allow_failure: true
215 - when: always
216 allow_failure: false
217 {{/code}}