Moderne Softwareentwicklung besteht aus viel mehr als nur Code und Kaffee. Ohne passende Deployment-Strategien und eine saubere Release-Verwaltung laufen selbst kleine Projekte schnell aus dem Ruder und werden unbeherrschbar.
Wie Sie mit Jenkins, Git und Nexus eine CI-Pipeline aufbauen, zeigt Ihnen dieses Praxisbuch anhand der wichtigsten Aspekte erfolgreicher Software-Projekte: Source Control Management, flächendeckende Softwaretests mit einer sinnvollen Qualitätskontrolle und ein gut organisiertes Deployment. Marco Schulz gibt Ihnen dabei nicht nur seine Erfahrung aus zahlreichen internationalen IT-Projekten weiter, sondern hält auch eine Menge Tipps und Überlegungen zum guten Software Engineering für Sie parat.
Aus dem Inhalt:
- The Big Picture: DevOps und die Softwareentwicklung
- Software testen: Test Driven Development, Unit- und Integrationstests
- Agiles Release Management: Sprints vs Release
- Continuous Delivery
- Source Control Management
- Jenkins einrichten und betreiben
- Build Management
- Build Jobs schreiben und optimieren
- Jenkins Pipelines mit Blue Ocean
- Qualitätskontrolle mit SonarQube
- Repository Management mit Nexus
Inhaltsverzeichnis
Materialien zum Buch . . . 11
1. Einführung . . . 13
1. 1 . . . Was Sie schon wissen sollten und was Sie lernen werden . . . 13
1. 2 . . . Worüber wir reden: Eine CI-Pipeline für Ihre Softwareprojekte . . . 15
The Big Picture . . . 19
2. Jenkins für Eilige . . . 21
2. 1 . . . Jenkins in 10 Minuten . . . 21
2. 2 . . . Jenkins- und DevOps-Fachbegriffe . . . 28
2. 3 . . . Fazit . . . 34
3. Das große B(u)ild der Automatisierung . . . 37
3. 1 . . . Die Rollen von DevOps im Softwareentwicklungsprozess . . . 43
3. 2 . . . Infrastruktur für Softwareentwicklungsprojekte . . . 48
3. 3 . . . Sonderfall: Microsoft und . NET in der CI-Pipeline . . . 56
3. 4 . . . Fazit . . . 58
4. Software testen -- aber wie? . . . 61
4. 1 . . . Komponententests und das Test-Driven Development . . . 65
4. 2 . . . Akzeptanztests und Behavior-Driven Development . . . 78
4. 3 . . . Integrationstests . . . 84
4. 4 . . . Fazit . . . 93
5. Release-Management in einer agilen Welt . . . 97
5. 1 . . . Sprints vs. Release . . . 101
5. 2 . . . Semantische Versionsnummern . . . 102
5. 3 . . . Die Gefahren von Continuous Delivery . . . 108
5. 4 . . . Fazit . . . 123
6. Source-Control-Management . . . 125
6. 1 . . . Die Rolle von SCM in der CI-Serverumgebung . . . 125
6. 2 . . . Git und Subversion . . . 127
6. 3 . . . Die Merging-Hölle . . . 131
6. 4 . . . Branch-Modelle und Pull-Requests . . . 137
6. 5 . . . Rebase vs. Merge: Code integrieren . . . 146
6. 6 . . . Feature-Branches nutzen . . . 149
6. 7 . . . Fazit . . . 154
Continuous-Integration-Server . . . 157
7. Einen CI-Server mit Jenkins einrichten und betreiben . . . 159
7. 1 . . . Voraussetzungen . . . 159
7. 2 . . . Drei Wege zu einer Jenkins-Server-Installation . . . 161
7. 3 . . . Grundkonfiguration und Plug-ins . . . 173
7. 4 . . . Jenkins als verteiltes System aufsetzen . . . 186
7. 5 . . . Benutzerverwaltung . . . 210
7. 6 . . . Fazit . . . 217
8. Build-Management . . . 219
8. 1 . . . Historisches: Build-Server, IDEs und das Chaos beim Programmieren . . . 220
8. 2 . . . Die Build-Logik . . . 222
8. 3 . . . Anwendungsarten: Mobile, Desktop, Web-App . . . 222
8. 4 . . . Anwendungskonfiguration und Datenhaltung . . . 224
8. 5 . . . Datenbanken . . . 229
8. 6 . . . Backend: Java und Java-Enterprise . . . 237
8. 7 . . . Frontend: JavaScript, Node. js und Bower . . . 250
8. 8 . . . Mobile Devices . . . 255
8. 9 . . . Exotische Welten: PHP, Ruby und Co. in Docker-Containern . . . 258
8. 10 . . . Fazit . . . 270
9. Jenkins-Build-Jobs . . . 273
9. 1 . . . Build-Jobs schreiben . . . 274
9. 2 . . . Bestehende Jenkins-Jobs optimieren . . . 299
9. 3 . . . Jenkins-Pipelines mit Blue Ocean . . . 303
9. 4 . . . Jenkins mit der JobDSL automatisieren . . . 320
9. 5 . . . Build-Nummern vergeben -- oder nicht? . . . 325
9. 6 . . . Jenkins RESTful API . . . 327
9. 7 . . . Deployments automatisieren: Scripting mit Bash, PowerShell und Batch . . . 330
9. 8 . . . Fazit . . . 334
10. Qualitätskontrolle . . . 337
10. 1 . . . Was ist überhaupt »Qualität«? . . . 338
10. 2 . . . Metriken, und was sie verschweigen . . . 340
10. 3 . . . Jenkins-Plug-ins für mehr Qualität: JaCoCo, OWASP und Maven Site . . . 347
10. 4 . . . SonarQube . . . 352
10. 5 . . . Fazit . . . 360
11. Sonatype Nexus: Der Repository-Manager . . . 363
11. 1 . . . Versionen und Zusatzprodukte . . . 364
11. 2 . . . Nexus selbst betreiben . . . 365
11. 3 . . . Konfiguration der Repositories . . . 372
11. 4 . . . Artefakte auf Maven Central veröffentlichen . . . 379
11. 5 . . . Fazit . . . 390
A. Abkürzungsverzeichnis . . . 391
B. Literaturliste . . . 393
Index . . . 395