Continuous Integration (CI) Workshop

Ähnliche Dokumente
AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

Verteilte Systeme (WS 2013/14) Übung 0: Einführung in Maven und Git. Oliver Kleine Institut für Telematik, Universität zu Lübeck

Linux Hochverfügbarkeits-Cluster

Automatischer Build mit Maven 2

Oracle Cloud Control. Seminarunterlage. Version vom

Erfolgreicher Ums9eg auf Git

Linux Cluster mit Pacemaker und Heartbeat 3

Build Management. Präsentation von Daniel Mies

Von SVN zu Git. Daniel Willmann cbna

Continuous Integration für Eclipse 4 RCP-Anwendungen mit Maven/Jenkins/Nexus/Sonar

Ein ganz normaler Tag. Eclipse und Ich

Installationsbeschreibung

Tomcat Konfiguration und Administration

Git in großen Projekten

Wir implementieren Lösungen. + DevOps-in-the-Box. Rainer Heinold VP Technology and Services

Programmieren in Java

Björn Feustel Steffen Schluff. Build-Infrastrukturen mit marktgängigen Tools

Verteilte Versionsverwaltung mit Git

Consultant & Geschäftsführer, enpit consulting OHG ugb@enpit.de

JSP und Servlet Programmierung

Praktikum Ingenieurinformatik (PI)

Gerrit und Jenkins ein Traumpaar für Pre-Tested Commit

Die Projek*ools. Files, Git, Tickets & Time

Der Weisheit letzter Schluss:

Apache HTTP Server Administration

MySQL Administration. Seminarunterlage. Version 3.02 vom

git Änderungen verwalten mit git

Einführung in Maven und GWT

Gerrit und Jenkins ein Traumpaar für Pre-Tested Commit

Programmieren 2 06 Git-Teamwork und Egit

IBM DB2 für Linux/Unix/Windows Monitoring und Tuning

Java Performance Tuning

Oracle Weblogic Administration Grundlagen

Linux Cafe Referent: Bernd Strößenreuther

Atlassian Git Essentials Nahtlose Entwicklungsworkflows aus einer Hand

Big Data Informationen neu gelebt

eclipse - EGit HowTo

Entwicklungswerkzeuge

git & git-flow Jens Sandmann Warpzone Münster e.v. Jens Sandmann (WZ) git & git-flow / 31

Apache Subversion (SVN)

Team- Entwicklung unter Eclipse

Verteilte Versionskontrolle mit GIT Dortmund Ansgar Brauner - GreenPocket GmbH - Köln

Abhängigkeiten und Git

EGit: Die effiziente Git- Integration in Eclipse

Versionierung und Bugtracking mit Git(Hub)

Einführung in Subversion. Tutorium SWP

IBM Informix SQL. Seminarunterlage. Version vom

Apache Subversion (SVN)

WebSphere Application Server Installation

Inhaltsverzeichnis. 1 Einleitung. Literatur. 1.1 CVS (Concurrent Version System) [Pru03, Zee02, Ced05]

Maven 2.0. DRV Jahrestagung Java Würzburg Rainer Vehns, codecentric GmbH codecentric GmbH

Git - Fast Version Control System

Softwareprojekte mit Kultur

Gliederung. Einführung. Kleines Maven Wörterbuch. Maven im Unternehmenseinsatz. Was bringt die Zukunft?

IT-Projektcontrolling

Maven 2 Softwareprojekte mit Kultur

Enigma2 Plugin Entwicklung mit Eclipse

Continuous Database Integration mit Flyway

Oracle Backup und Recovery mit RMAN

Abschlussvortrag Masterarbeit: Operationalizing Architecture in an agile Software Projec

Auswahl eines Continuous Integrationsservers

Bugtracking Tools codecentric GmbH

Versionkontrolle mit git

Builddreikampf: Ant, Maven und Gradle. Sven Bunge / Carl Düvel

1 Welches Problem löst Maven?

Persönliche Build-Höllen für Jedermann Andreas Hartmann & Dr. Halil-Cem Gürsoy

Nils Hartmann Gerd Wütherich. Build my bundle! oder: Es muss nicht immer PDE sein

IBM Informix Tuning und Monitoring

GitLab als alternative Entwicklungsplattform zu Github.com

Build-Prozesse für Geschäftsanwendungen mit Apache Maven

Oracle Datenbankadministration Grundlagen

Continuous Delivery in der Realität eines Großunternehmens

Operation am offenen Herzen

Wer bin ich. > Senior Consultant, Architekt und Trainer (MATHEMA Software GmbH) > 25+ Jahre Software > 12+ Jahre Java Enterprise > 7+ Jahre.

End-to-End Agility Sind Sie schon agil genug? Mag. Christoph Leithner

Bekannte Tools in einem agilen Ansatz. Frank Schwichtenberg SourceTalkTage 2013 Göttingen,

Buildsystem. Maven & Scons. Controls Entwicklungsforum Januar 2012

Oracle Backup und Recovery

Administration und Konfiguration für JBOSS

Inhaltsverzeichnis. 2.2 Grundlagen der UML Zusammenfassung... 53

Redmine, das Projekt Management Werkzeug

Git II. Dezentrale Versionsverwaltung im Team

Abschlussbericht. Erstellung eines automatisierten Build-Prozesses für Eclipse-RCP- Anwendungen am Fallbeispiel Control System Studio.

Das Build Tool Ant. Sebastian Mancke,

Oracle Datenbankprogrammierung mit PL/SQL Grundlagen

Einführung Git Interna Workflows Referenzen. Git. Fast Version Control System. Michael Kuhn

ANT. Kurzvortrag von Manuel Schulze.

Git-Workflows im Alltag

Build-Pipeline mit Jenkins

Oracle AWR und ASH Analyse und Interpretation

Buildwerkzeuge für Javaprojekte. Christian Bunse Institut für Informatik

Versionskontrollsysteme

Einführung in Verteilte Versionskontrollsysteme. am Beispiel von Git

Versionskontrolle mit Mercurial. Michael Gebetsroither

Moodle aktuell halten mit Git

Transkript:

Continuous Integration (CI) Workshop Seminarunterlage Version: 1.05 Version 1.05 vom 28. Februar 2017

Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen oder eingetragene Warenzeichen der jeweiligen Firmen und beziehen sich auf Eintragungen in den USA oder USA-Warenzeichen. Weitere Logos und Produkt- oder Handelsnamen sind eingetragene Warenzeichen oder Warenzeichen der jeweiligen Unternehmen. Kein Teil dieser Dokumentation darf ohne vorherige schriftliche Genehmigung der weitergegeben oder benutzt werden. Die besitzt folgende Geschäftsstellen Adressen der Karl-Schurz-Straße 19a D-33100 Paderborn Tel.: (+49) 0 52 51 / 10 63-0 An der alten Ziegelei 5 D-48157 Münster Tel.: (+49) 02 51 / 9 24 35 00 Welser Straße 9 D-86368 Gersthofen Tel.: (+49) 08 21 / 507 492 0 Kreuzberger Ring 13 D-65205 Wiesbaden Tel.: (+49) 06 11 / 7 78 40 00 Wikingerstraße 18-20 D-51107 Köln Tel.: (+49) 02 21 / 8 70 61 0 Internet: http://www.ordix.de Email: seminare@ordix.de Seite 2 Version: 1.05

Inhaltsverzeichnis 1 Einführung... 8 1.1 Ziele der Softwareentwicklung... 9 1.2 Softwareentwicklungsprozesse... 10 1.3 Was ist ein System?... 11 1.4 Ausprägungen von Systemeigenschaften... 13 1.5 Der Mensch mag es nicht komplex!... 16 1.6 Komplexität... 17 1.6.1 Arten von Komplexität... 18 1.6.2 Regeln zum Umgang mit Komplexität... 19 1.7 Umgang mit Systemen... 20 1.8 Entwicklung von komplexen Systemen... 21 1.9 Agile Softwareentwicklung... 24 1.9.1 Agilität... 25 1.9.2 Ziel der Agilität... 26 1.10 CI-Grundprinzipien... 27 1.11 Aspekte für Tool-Unterstützung... 28 1.12 Beispiel: Continuous Integration Umgebung... 29 2 Eclipse... 30 2.1 Was ist Eclipse... 31 2.2 Historie... 32 2.3 Release und Version... 33 2.4 Download und Versionen... 34 2.5 Eclipse IDE for Java EE Developers... 35 2.6 Installation... 36 2.7 Workspace... 37 2.8 Hauptbestandteile der Anwendung... 38 2.9 Perspektiven... 39 2.10 Views... 40 2.11 Editoren... 41 2.12 Plugins... 42 2.13 Eclipse Update... 43 2.14 Zusätzliche Informationen... 44 2.15 Konfiguration... 45 2.16 Workspace Konfiguration... 46 2.17 Auswahl der richtigen Java-Version... 47 2.18 Konfiguration Git (Properties)... 48 2.19 Konfiguration Git (Repository)... 49 2.20 Konfiguration Maven... 50 2.21 Konfiguration weiterer Plugins... 51 2.22 Was ist Checkstyle?... 52 2.23 Vorteile... 53 2.24 Vorgehen von Checkstyle... 54 2.25 Installation... 55 2.26 Konfiguration... 56 2.27 Check Configuration... 57 2.28 Arbeiten im Team... 58 2.29 Projektabhängige Konfiguration... 59 2.30 Aktivierung / Ausführung... 60 2.31 Anzeige der Checkstyle-Befunde... 61 2.32 Anzeige im Editor... 62 2.33 View: Checkstyle violations... 63 2.34 View: Checkstyle violations chart... 64 2.35 Was ist Findbugs?... 65 2.36 Vorteile... 66 2.37 Installation... 67 2.38 Konfiguration... 68 2.39 Rank und Fehlerklassen... 69 Version: 1.05 Seite 3

2.40 Aktivierung / Ausführung... 70 2.41 Findbugs Eclipse Views... 71 2.42 Anzeige von Befunden... 72 2.43 Bug Informationen und Hilfestellung... 73 2.44 Eclipse Maven Plugin Vorteile... 74 2.45 Installation... 75 2.46 Konfiguration... 76 2.47 Konfiguration Installationen... 77 2.48 Konfiguration Installationen (2)... 78 2.49 Konfiguration User Settings... 79 2.50 Maven Goals in Eclipse ausführen... 80 3 Redmine... 81 3.1 Redmine... 82 3.2 Voraussetzungen und Installation... 83 3.3 Redmine-Mylyn-Connector... 84 3.4 Eclipse-Anbindung... 85 3.5 Redmine-Repository anbinden... 86 3.6 Redmine Query definieren... 87 3.7 Taskliste... 88 3.8 Features... 89 4 Maven... 90 4.1 Einleitung... 91 4.2 Definition... 92 4.3 Begriffsdefinitionen... 93 4.4 Settings.xml... 94 4.5 POM... 95 4.6 Super-POM... 96 4.7 Aufbau der pom.xml... 97 4.8 Repositories... 98 4.9 Download eines Artifacts... 99 4.10 Proxy Konfiguration... 100 4.11 Benutzer... 101 4.12 Build Lifecycle... 102 4.13 Goals... 103 4.14 Build Lifecycle: default... 104 4.15 Build Lifecycle: clean... 105 4.16 Build Lifecycle: site... 106 4.17 Lifecycle: Ablauf... 107 4.18 Lifecycle: Zuordnung Plugins/Goa... 108 4.19 Dependency Management... 109 4.20 Das Maven Artefakt... 110 4.21 Definition von Abhängigkeiten... 111 4.22 Transitive Abhängigkeiten... 112 4.23 Der Dependency-Tree... 113 4.24 Exclusion... 114 4.25 Scope... 115 4.26 Maven Plugins... 116 4.27 Maven-Core-Plugins... 117 4.28 Maven-Compiler-Plugin... 118 4.29 Compiler Plugin: Usage / Configuration... 119 4.30 Maven-Jar-Plugin... 120 4.31 Jar Plugin: Usage / Configuration... 121 4.32 Maven-Assembly-Plugin... 122 4.33 Assembly-Plugin: Usage / Configuration... 123 4.34 Assembly Descriptor... 124 4.35 Maven-Surefire-Plugin... 125 4.36 Release-Plugin: Usage / Configuration... 126 4.37 Maven-Resources-Plugin... 127 Seite 4 Version: 1.05

4.38 Resources-Plugin: Usage / Configuration... 128 4.39 Maven-Dependency-Plugin... 129 4.40 Dependency-Plugin: Usage / Configuration... 130 4.41 Maven-Release-Plugin... 131 4.42 Release-Plugin: Usage / Configuration... 132 5 Nexus... 133 5.1 Aufgaben und Vorteile des Nexus Repository Manager... 134 5.2 Vorteil eines Repository Managers... 135 5.3 Verwalten von Repositories... 136 5.4 Sonatype Nexus... 137 5.5 Verwalten von Repositories... 138 5.6 Rechteverwaltung / Benutzer... 139 5.7 Rechteverwaltung / Rollen... 140 5.8 Rechteverwaltung / LDAP... 141 5.9 Repository in Maven aufnehmen... 142 6 Git... 143 6.1 Versionsverwaltung... 144 6.2 Standards der Versionsverwaltung... 145 6.3 Zentrale Versionsverwaltung... 146 6.4 Dezentrale Versionsverwaltung... 147 6.5 Git... 148 6.6 Unterschiede/Vorteile... 149 6.7 Installation... 150 6.8 Konfiguration... 151 6.9 Ssh Public Key Authentifizierung... 152 6.10 3 Status Phasen... 153 6.11 Lifecycle von Dateien... 154 6.12 Git init... 155 6.13 Git Repository und Working Directory... 156 6.14 Git add... 157 6.15 Git commit... 158 6.16 Git clone... 159 6.17 Git pull... 160 6.18 Git push... 161 6.19 Git Status... 162 6.20 Historie von Dateien... 163 6.21 TAGs... 164 6.22 Branches... 165 6.23 Mergen... 166 6.24 Centralized Workflow... 167 6.25 Feature Branch Workflow... 168 6.26 Rebase... 169 6.27 Stash... 170 6.28 Gitflow Workflow... 171 7 Jenkins... 173 7.1 Allgemeines... 174 7.2 Einführung/Installation... 175 7.3 Allgemeines zu Jobtypen... 176 7.4 Jobtypen... 177 7.5 Jenkins System Konfiguration... 179 7.6 Jenkins Globale Konfiguration... 180 7.7 Jenkins Builds... 181 7.8 Jenkins Benutzerverwaltung... 182 7.9 Jenkins Rechteverwaltung... 183 7.10 Git Installation... 184 7.11 Git-Anbindung... 185 7.12 Plugins... 186 Version: 1.05 Seite 5

7.13 SonarQube Plugin... 187 8 SonarQube... 188 8.1 Einführung... 189 8.2 Qualitätsbereiche... 190 8.3 SonarQube Fehlerscala... 191 8.4 Die wichtigsten Metriken... 192 8.5 Quality-Gates... 193 8.6 Komplexität... 194 8.7 Dokumentation Kommentare... 195 8.8 Fehler... 196 8.9 Dashboard Projekt Übersicht... 197 8.10 SonarQube - Issues... 198 8.11 Versionsvergleich... 199 8.12 Timeline: Entwicklung der Software... 200 8.13 SonarQube Konfiguration... 201 8.14 Konfiguration von SonarQube in Jenkins... 202 8.15 SonarQube Scanner... 203 8.16 Aufruf des SonarQube... 204 8.17 Fazit... 205 9 Ausblick... 206 9.1 Übersicht Alternative IDEs... 207 9.1.1 Netbeans DIE... 208 9.1.2 Installation... 209 9.1.3 Screenshot Netbeans IDE... 210 9.1.4 Netbeans IDE Vorteile... 211 9.2 IntelliJ IDEA... 212 9.2.1 Installation... 213 9.2.2 Screenshot IntelliJ IDEA... 214 9.2.3 Vorteile IntelliJ IDEA... 215 9.3 Ant... 216 9.3.1 Ant Eigenschaften... 217 9.3.2 Ant Build-Datei... 218 9.3.3 Targets... 219 9.3.4 Tasks... 220 9.3.5 Beispiel: Ant Build-File (Ausschnitt)... 221 9.4 Gradle... 222 9.4.1 Gradle Eigenschaften... 223 9.4.2 Gradle Build-Datei... 224 9.4.3 Projects und Tasks... 225 9.4.4 Beispiel: Gradle Build-File... 226 9.5 Atlassian... 227 9.6 Jira... 228 9.6.1 Jira Features (Auszug)... 229 9.6.2 Jira Lizenzmodell... 230 9.6.3 Jira Screenshot Oberfläche (Release)... 231 9.7 Confluence... 232 9.7.1 Confluence Features (Auszug)... 233 9.7.2 Confluence Screenshot Oberfläche (Editor)... 234 9.8 Bitbucket... 235 9.8.1 Bitbucket Features (Auszug)... 236 9.8.2 Bitbucket Screenshot Oberfläche (Pull Request)... 237 9.9 Bamboo... 238 9.9.1 Bamboo Features (Auszug)... 239 9.9.2 Bamboo Screenshot Oberfläche (Tests)... 240 9.10 SVN... 241 9.10.1 SVN Informationen... 242 9.11 Vorteile gegenüber CVS... 243 9.12 Client Lösungen... 244 Seite 6 Version: 1.05

9.13 Nachteile/Unterschiede gegenüber Git... 245 9.14 Codereview mit Gerrit... 246 9.15 Continuous Delivery... 248 Version: 1.05 Seite 7