SYP-2023-04-26
CI-Anforderungen:
- Gemeinsame Codebase (Versionsverwatung, alles muss drin sein)
- Automatisierter build (unabhängug von der Entwicklungsumgebung)
- Kontinuierliche Testentwicklung
- Jeder commitet mindestens jeden Tag
- häufig integrieren
- Fehlergrund leicht einschränkbar
- CI Server (nach jedem Commit build und tests)
- Sofortige Problembehebung
- Jeder Commit auf mainline triggert Build
- Test in einem Production "Klon"
- Der Build muss schnell sein (bleiben)
- Ergebnisse sind öffentlich
- Jeder kann sehen was passiert
CI ist die Voraussetzung zur Continous Delivery (Pilepine)
Gitlab CI Gesteuert durch YAML Dateien als Teil des Repositories
- Jobs: was ist zu tun (Compilen)
- Stages: wann (Testen nach compilen)
Wenn alle Jobs einer Stage erfolgreich sind wird nächste Stage ausgeführt
Wenn ein Job einer Stage failed endet die ganze Pipeline
Definition in .gitlab-ci.yml (Teil des Repositories)
image: maven:latest
[stages]
stages:
- build
- test
[variablen, keine passwörter/keys!]
variables:
[unterschiedliche Jobs]
build:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ...'
stage: build
script:
- mvn compile
variables:
test:
stage: test
script:
- mvn test
[Reports]
artifacts:
reports:
junit:
...
4 Perspektiven
- Systemperspektive: wie ist das System in die Umbgebung eingebettet, mit welchen Systemen interagiert es wie
- Statische Perspektive, zentrale Komponenten ihre Schnittstellen und Beziehungen i.d.R. hierarchisch verfeinert.
- Dynamische Perspektive: wie arbeiten die Komponenten zur Laufzeit zusammen. Beschränkt auf wichtige interaktionen
- Verteilungsperspektive: wie werden Komponenten der statischein Perspektive auf Infrastruktur abgebildet. Auch Aufteilung auf Teams