SWC - Eins
SWC - Erste Prüfung
SWC - Erste Prüfung
-
- 1 / 106
-
Cartes-fiches
Wie ist ein pom.xml auifgebaut?
1) Project Part //Beschreibt Projetk
2) Maven-Part //Beschreibt, wie der Build läuft
3) Dependency Part //Definiert Libraries
Was versteht man unter Maven Dependency Management?
Das ist die Möglichkeit Libraries zu verwalten, die für den Build benötigt werden
1) Wenn Maven für den Build eine Library braucht, schaut er erst Lokal unter ~/..m2/repository
2) Falls nichts gefunden wird, schaut er im Maven Central nach -> Download in ~/.m2/repository
Wozu braucht man Continous Integration
- Weil Software aus vielen Komponenten besteht, die zusammenarbeiten müssen
Was versteht man unter Integration?
- Module müssen zusammen funktionieren -> Verschiedene Komponenten
Wann ist eine Integration erfolgreich?
Wenn sie:
- kompilliert
- run
- Tests laufen durch und sind pass
- Deployment erfolgreich
Was sind die grössten Probleme/Herausforderungen für Integration?
- Verschiedene Modelle
- Verschiedene Systeme
- Verschiedene Komponenten
Wann passiert Integration?
- Beim merge/push ins Repo
- Bei besonders kritischen Schnittstellen
Wann schlägt Integration fehl?
- Integration Server baut nicht erfolgreich
- Geteilte Komponenten funktionieren auf einem System, aber nicht auf einem anderen (Nicht Portable)
- Unit-Tests sind fehlgeschlagen
- Code- Qualität ist schlecht (Integrationtests schlagen fehl z.B. Checkstyle)
- Deployment schläft fehlt z.B. ssh kein Zugang
Was versteht man unter CI?
- Automatisierte Builds + Tests + Deployment
- Es ist ein triggered Event
Welche CI-Practices/Regeln gibt es?
- Alle arbeiten auf einer gemeinsamen Code-Basis
- Build läuft automatisch
- Tests laufen automatisch im Build
- Häufige Integration -> Weniger Konflikte (Konflikge früh erkennen)
- Jeder Commit triggert Build
- Keep the build fast
- Tests in Kopie von Prod Umgebung
- Artefakte/Executable einfach verfügbr machen
- Jeder kann sehen was gerade passiert (Pipeline)
- Deployment automatisieren
- Never commit a failing build
- Kein Code auf kaputten Stand
Was sind die Voraussetzungen für Continous Integration?
- Build Server
- Version Control Server
- Deployment Server
- Automation Build (Maven)
- CI-Tools
- Entwickler müssen -> Täglich Commiten, Code testen und Tests für den Code schreiben
Wie sieht das CI-Setup aus?
1) Developer Pulled alles vom Repo oder (VCS)
2) Developer pushed /commited
3) Event wird getriggered -> Build wird getriggered
4) Build Server macht checkout vom Repo und beginnt den Build
5) Reports etc werden erstellt -> Dev wird benachrichtigt
Warum ist Continous Integration wichtig für agile Projekte?
- Automatisches bauen, automaitsche Tests und schnelles Feedback/Dokumentation
- Kurze Iterationen, schnelle Anpassungen möglich
Was soll alles integriert und getestet werden?
- Java Funktionen, Methoden
- Datenbankfunktionen
- Schnittstellen/Interfaces zu anderen Applications
Was sind die Hauptvorteile von Continous Integration?
- Man kann Fehler früh erkennen
- Es gibt weniger Bugs
- Bessere Qualität
- Besserer Status-Übersicht
- Weniger Aufwand
- Entdekct potenzielle Deployment Issues
Was macht mvn clean compile?
- Führt zwei Lifecycle hintereinander aus
- Erst bereinigt er alle alten Artifakte, anschliessend kompiliert er
Wie kann man System kompilieren (yml)?
build-stage:
stage: build
script:
-mvn clean compile
Wie geht Code-Analyse mittels Checkstyle (yml)?
test-stage:
stage: test
script:
-mvn verify checkstyle.check
Führt eine CI-Pipeline immer alle Phasen eines Maven-Skripts durch?
- Nein, nur was im .yml definiert ist