Changes for page GitLab Erklärungen
Last modified by pmeyer on 2025/09/12 04:41
From 83.1 to 84.1
From 84.19 to 84.20
From version 84.1
edited by Marco Grawunder
on 2025/08/15 08:53
on 2025/08/15 08:53
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. MarcoGrawunder1 +XWiki.sbeyer1 - Content
-
... ... @@ -178,3 +178,78 @@ 178 178 = Zeiterfassung in GitLab = 179 179 180 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]] 181 + 182 +---- 183 + 184 += GitLab Pipelines = 185 + 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 + 188 +== Pipeline im Basisprojekt v2 == 189 + 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.** 191 + 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. 194 + 195 +{{code language="yaml"}} 196 +stages: 197 + - verify 198 + - deploy 199 +{{/code}} 200 + 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// erlaubt in dem Fall, dass bei automatischer Ausführung die Pipeline nicht abgebrochen wird, falls sich euer Projekt nicht bauen lässt, damit darauffolgende Jobs weiterhin ausgeführt werden. 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}} 218 + 219 +((( 220 + Der //deploy_stats_pages// Job ist der erste Job, der in der //deploy//-Stage ausgeführt wird. Der Job erfasst eure Projektarbeitsdaten (bspw. eure Stundenbuchungen) und veröffentlicht diese, nur für euch in GitLab sichtbar, in eurem Projekt. 221 +Die Variablen sind Umgebungsvariablen, die zum Erfassen der Daten benötigt werden. S 222 + 223 +{{code language="yaml"}} 224 +deploy_stats_pages: 225 + stage: deploy 226 + image: maven:3.9.9-amazoncorretto-21-al2023 227 + variables: 228 + DEVELOPMENT_BRANCH_NAME: "development" 229 + FETCH_MULTITHREAD: "true" #options are true/false 230 + LOGLEVEL: "SHORT" #options are OFF, SHORT, LONG. Has an effect on the amount of logging when data is being added 231 + #TIME_FRAMES: "01.01.2025,31.03.2025,40,Zeitraum01;01.04.2025,31.05.2025,35" #Format start,end,minHours[,name];anotherTimeframe;anotherTimeframe;... 232 + script: 233 + - yum install -y git rsync 234 + - git clone https://gitlab.swl.informatik.uni-oldenburg.de/GA/gitlab2data.git 235 + - cd gitlab2data 236 + - mvn clean package 237 + - java -jar target/GitLab2Data-1.0-SNAPSHOT-jar-with-dependencies.jar 238 + - cd .. 239 + - mkdir -p public/data 240 + - rm -f public/data/*.json 241 + - cp gitlab2data/*.json public/data/ 242 + - git clone https://gitlab.swl.informatik.uni-oldenburg.de/GA/data4visual.git repo 243 + - rsync -av --exclude='data/' --exclude='.git' --exclude='.gitignore' repo/ public/ 244 + artifacts: 245 + paths: 246 + - public 247 + pages: 248 + path_prefix: "stats" #to allow for parallel deployments of the projects own page don't make the stats site the main deployment 249 + expire_in: never 250 + rules: 251 + - if: $CI_PIPELINE_SOURCE == "schedule" 252 + when: always 253 + - when: never 254 +{{/code}} 255 +)))