Slide 1

Slide 1 text

AUTOMATISIERUNG DES SOFTWARE- ENTWICKLUNGSPROZESSES Rabea Gransberger (MEKO-S GmbH) @rgransberger

Slide 2

Slide 2 text

20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 2

Slide 3

Slide 3 text

20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 3

Slide 4

Slide 4 text

Themen • Build & Deployment: Update OTIS • Installation OS/Java Updates, DB Backups, automatischer Neustart • Release Notes aus dem Issue Tracker • Rechnungen aus der Zeiterfassung • Einführung Continuous Integration • Automatischer Setup für neue Mitarbeiter / Server bei Kunden • Dokumentation: OTIS • Architektur Übersicht, Kunden Übersicht, Checklisten für häufige Aufgaben • Projekt-Management: Cross-Project Plan • Kommunikation: Gruppen Chats 20.10.2016 4 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 5

Slide 5 text

Eure Ideen zur Automatisierung ? #jfnauto 20.10.2016 5 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) https://www.flickr.com/photos/tormentalous/18517867464

Slide 6

Slide 6 text

20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 6

Slide 7

Slide 7 text

Was / Wie / Aufwand • Was haben wir in 10 Monaten geschafft? • Wie haben wir es umgesetzt? • Es gibt coolere Lösungen (wir haben nur den Lego Ferrari) • Leider keine Demos 20.10.2016 7 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 8

Slide 8 text

20.10.2016 10 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 9

Slide 9 text

20.10.2016 11 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 10

Slide 10 text

Setup 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 12

Slide 11

Slide 11 text

Neuer Mitarbeiter • Windows Installation aus Netzwerk • Softwareverteilung für Grundsoftware • Programme • Java? • IDE? • Ordnerstruktur • Betriebssystem einrichten 20.10.2016 13 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) volle wikiseite

Slide 12

Slide 12 text

Software Installieren • choco install jdk8 7zip dbeaver –y • (wie apt-get install ….) • choco upgrade all 20.10.2016 14 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 13

Slide 13 text

Boxstarter 20.10.2016 15 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) • Führt Reboot durch und macht weiter wenn nötig • Windows Einrichtung • Disable-GameBarTips • Enable-RemoteDesktop • Set-TaskbarOptions -Size Small -Lock -Dock Bottom -Combine Never • Set-WindowsExplorerOptions -EnableShowFileExtensions - EnableShowHiddenFilesFoldersDrives -EnableShowProtectedOSFiles - EnableExpandToOpenFolder

Slide 14

Slide 14 text

Desired State Configuration • Was formulieren, nicht Wie: • Google Chrome soll installiert sein • Ordner „build“ soll vorhanden sein • chef / puppet / ansible / Powershell DSC 20.10.2016 16 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 15

Slide 15 text

Configuration devSetup { Import-DscResource –ModuleName 'PSDesiredStateConfiguration' Import-DscResource -Module cChoco Node "localhost" { cChocoPackageInstaller installChrome { Name = "googlechrome" DependsOn = "[cChocoInstaller]installChoco" } File folderBuild { Type = 'Directory' Ensure = 'Present' DestinationPath = "$rootFolder\build" } 20.10.2016 17 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) Ordner Chrome

Slide 16

Slide 16 text

IDE: Eclipse 20.10.2016 18 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) Plugins Eclipse Version Lombok Dynamic Working Set Eclipse Ini Target Platform Einstellungen

Slide 17

Slide 17 text

20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 19

Slide 18

Slide 18 text

20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 20

Slide 19

Slide 19 text

20.10.2016 21 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 20

Slide 20 text

Testen • vagrant up • Lädt Image runter und startet (in Virtualbox) • Fügt Ordner hinzu • Führt das setup Powershell script aus • vagrant sandbox rollback • Maschine auf alten Zustand zurückversetzen • vagrant plugin install sahara / vagrant sandbox on • vagrant halt • Ausschalten 20.10.2016 22 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) Vagrant.configure("2") do |config| config.vm.box = "probalazs/win-10-x64-nw-build" config.vm.synced_folder „shell", "/shell„ config.vm.provision :shell, :path => "shell/setup.ps1" end Vagrantfile

Slide 21

Slide 21 text

Deployment 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 23

Slide 22

Slide 22 text

OTIS (Nein nicht die Fahrstühle ) 20.10.2016 24 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) • Eclipse RCP Applikation • Desktop • Ca. 300 einzelne Plugins • Microservices • 6 Kunden • Windows Server 2008/2012 • Kunden starten Client vom Netzlaufwerk • Keine Installation CLIENT SERVER

Slide 23

Slide 23 text

20.10.2016 25 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 24

Slide 24 text

Deployment 20.10.2016 26 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 25

Slide 25 text

Deployment 2014 • Snapshot erstellen • Produkt bauen, Client & Server dauert ca 15 min • Parallel: Release Notes schreiben (dauert ca 30min …. ) • Ordner zippen • VPN Verbindung herstellen • Kopieren • Datenbank Backup • Windows Updates • Java Updates • Entpacken am richtigen Ort • Einstellungen & Release Notes aktualisieren • Aktivieren (ggf. Mail an Kunden schreiben) 20.10.2016 27 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 26

Slide 26 text

20.10.2016 28 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) By Alex E. Proimos (http://www.flickr.com/photos/proimos/4199675334/) [CC BY 2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons

Slide 27

Slide 27 text

20.10.2016 29 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 28

Slide 28 text

Automatisierung • Produkt bauen und zippen • Hochladen • Datenbankbackup • Updates: Windows & Java • OTIS Update 20.10.2016 30 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 29

Slide 29 text

Build 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 31

Slide 30

Slide 30 text

Build • Maven Tycho • 2012 versucht, nie abgeschlossen • Directory based Targetplatform • 3.8.2 Basis -> Kein Java 8 • Lombok • Features die aufeinander aufbauen 20.10.2016 32 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 31

Slide 31 text

20.10.2016 33 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 32

Slide 32 text

3 TAGE SPÄTER 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 34

Slide 33

Slide 33 text

20.10.2016 35 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) build.zip 3 min statt 15 min!

Slide 34

Slide 34 text

20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 36

Slide 35

Slide 35 text

Update 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 37

Slide 36

Slide 36 text

Updates 20.10.2016 38 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) • Desktop App von Netzlaufwerk • => Update nur möglich wenn es keiner verwendet • => Wartungsfenster 18-20 Uhr • => Patches im Betrieb schwer möglich

Slide 37

Slide 37 text

Delegierende Exe • Symbolic Links oder • „Delegierende Exe“ 20.10.2016 39 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) set /p Build=

Slide 38

Slide 38 text

Auto Update 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 40

Slide 39

Slide 39 text

Auto Update • Client Version & Server Version • Jobs (Quartz wie Cron) in Server Version • Auto Update Job schaut auf FTP Server nach Updates 20.10.2016 41 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) DEV FTP Kunde Deploy Check CLIENT SERVER

Slide 40

Slide 40 text

Auto Update 20.10.2016 42 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) DEV #Update 20161010_158 #Mon Oct 10 18:14:07 CEST 2016 customers=demo1,demo2 desktopVersion=1.5.0 timestamp=1476116047814 update.txt Build update.zip FTP Upload

Slide 41

Slide 41 text

Auto Update • update1.txt herunterladen • update2.txt herunterladen • customer=demo2 • update1.zip herunterladen 20.10.2016 43 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) FTP update1.txt update1.zip update2.txt update2.zip … Kunde demo1 Check SERVER #Update 20161010_158 #Mon Oct 10 18:14:07 CEST 2016 customers=demo1,demo2 desktopVersion=1.5.0 timestamp=1476116047814

Slide 42

Slide 42 text

Auto Update Job • .zip entpacken • neuer Versionsordner • Release Notes anpassen • build.txt auf neue Version • Neue Version starten • Status per Mail senden • Alte Version beenden • => Neue Version beim nächsten Start 20.10.2016 44 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 43

Slide 43 text

Release Notes 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 46

Slide 44

Slide 44 text

20.10.2016 47 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 45

Slide 45 text

20.10.2016 48 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 46

Slide 46 text

Release Notes 20.10.2016 49 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 47

Slide 47 text

20.10.2016 50 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 48

Slide 48 text

20.10.2016 51 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 49

Slide 49 text

20.10.2016 52 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 50

Slide 50 text

20.10.2016 53 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 51

Slide 51 text

Deployment 2016 • Snapshot erstellen • Produkt bauen, dauert ca 10 min • Parallel: Release Notes schreiben (dauert ca 30min …. ) • Ordner zippen • VPN Verbindung herstellen • Kopieren • Datenbank Backup • Windows Updates • Java Updates • Entpacken am richtigen Ort • Einstellungen & Release Notes aktualisieren • Aktivieren (ggf. Mail an Kunden schreiben) 20.10.2016 54 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 52

Slide 52 text

System Health 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 56

Slide 53

Slide 53 text

System Monitoring • Laufen Entwicklersysteme • Laufen Kundensysteme • Gibt es Fehler bei der Ausführung? 20.10.2016 57 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 54

Slide 54 text

20.10.2016 58 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 55

Slide 55 text

Program Health 20.10.2016 61 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 56

Slide 56 text

OTIS Server Jobs • Laufen im Hintergrund 20.10.2016 62 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 57

Slide 57 text

20.10.2016 63 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 58

Slide 58 text

Nach Hause Telefonieren • Heart Beat Web-Service • Status Info Per Mail: Status Mail 1x pro Stunde ! 20.10.2016 64 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) By Lou133lou133 (Own work) [CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)], via Wikimedia Commons

Slide 59

Slide 59 text

Nach Hause Telefonieren • Status Mail 1x pro Stunde 20.10.2016 65 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 60

Slide 60 text

Läuft? • 10 Kunden -> 10 Mails pro Stunde • => 240Mails am Tag 20.10.2016 66 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 61

Slide 61 text

Läuft nicht! 20.10.2016 67 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 62

Slide 62 text

Bug Reports 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 69

Slide 63

Slide 63 text

Bug Reports 20.10.2016 70 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) • Melden Kunden Bugs? • Möglichkeit im Programm anbieten • Support-Client (Teamviewer o.ä.)

Slide 64

Slide 64 text

Logs per Mail senden • Zusätzliche Informationen: • Zeitpunkt: 14.10.2016 12:02:08 • Benutzer-Login: • Programm-Version: 1.5.5 • IP-Adresse: • System: Windows 10 x86 10.0 • Java: Oracle Corporation 1.8.0_91 • Geöffnete Ansichten: • -Übersicht • - Tankvorgangsliste • -Kundenliste • -Kartenliste 20.10.2016 71 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 65

Slide 65 text

Automatic Error Reporting • u.a. Log4j Appender • Warnungen & Fehler • Stracktrace Deduplication • Issue Tracker Anbindung 20.10.2016 73 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 66

Slide 66 text

Incident Report 20.10.2016 74 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) https://demo.ctrlflow.com

Slide 67

Slide 67 text

• Fehlerdetail 20.10.2016 75 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 68

Slide 68 text

Dokumentation 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 76

Slide 69

Slide 69 text

OTIS Hilfe für Kunden • Plugin-Projekte • Jeder Kunde hat unterschiedliche Zahl Plugins • Hilfe darf nur die Teile enthalten die der Kunde hat • Bestehendes Dokument: Word • Muss für Kunde angepasst werden • Einbindung als Eclipse Hilfe 20.10.2016 77 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 70

Slide 70 text

AsciiDoc • Umwandlung Word  AsciiDoc mit Pandoc • pandoc -s -S doku.docx -t asciidoc -o doku.adoc 20.10.2016 78 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) = Hello, AsciiDoc! Doc Writer An introduction to http://asciidoc.org[AsciiDoc]. == First Section * item 1 * item 2

Slide 71

Slide 71 text

AsciiDoc • docx mit zip entpacken: word/media Bilder rauskopieren 20.10.2016 79 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 72

Slide 72 text

PDF Styling 20.10.2016 80 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 73

Slide 73 text

Hauptprojekt OTIS ======= :basepath: ..\..\..\.. :plugindoc: docs\asciidoc\index.adoc include::{basepath}/project1/{plugindoc}[] include::{basepath}/project2/{plugindoc}[] 20.10.2016 82 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) +---docs | \---asciidoc | | index.adoc | +---images | \---telephony +---META-INF +---resource | \---icons \---src \---de \---mekos

Slide 74

Slide 74 text

Continuous Integration 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 87

Slide 75

Slide 75 text

Jenkins • Automatische Builds • Ausführung von Tests • Who Broke the Build? • Deployment Pipelines 20.10.2016 88 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 76

Slide 76 text

20.10.2016 90 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 77

Slide 77 text

Code Review 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 91

Slide 78

Slide 78 text

Code Review / Quality Check • Plugins für automatischen Review • Ausführung über Maven • Dashboard für Übersicht • Issues in Code angezeigt • Können als False positive markiert werden • Quality Gates: Grün oder Rot • Sonar Lint in Eclipse 20.10.2016 92 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 79

Slide 79 text

20.10.2016 93 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 80

Slide 80 text

20.10.2016 94 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 81

Slide 81 text

Kommunikation 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 96

Slide 82

Slide 82 text

20.10.2016 98 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 83

Slide 83 text

Fazit 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 99

Slide 84

Slide 84 text

Aufwand Was Wie Aufwand Status Setup Powershell / DSC / Chocolatey 1 T in Arbeit Setup Eclipse Oomph 1 T Abgeschlossen System Monitoring PRTG (Status Mail) 4h Abgeschlossen Error Reporting Ctrlflow AER Log4j2 Appender 2h in Arbeit Build Maven Tycho 3 T in Arbeit Deployment FTP Auto Update (inkl. Delegierende Exe) 2 T Abgeschlossen Deployment Release Notes 3 T Abgeschlossen Dokumentation Word zu Asciidoc 2 T in Arbeit Jenkins Einrichtung 4h in Arbeit Code Review / Quality Sonarqube 4h in Arbeit 20.10.2016 100 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 85

Slide 85 text

Fazit • 10 Monate Teilzeitarbeit • Vereinfachung wenn Kollege im Urlaub • Kontinuierliche Arbeit erforderlich • Manchmal frustrierend und langwieriger als gehofft 20.10.2016 101 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 86

Slide 86 text

Offene Themen • Build & Deployment: Update OTIS • Installation OS/Java Updates, DB Backups, automatischer Neustart • Release Notes aus dem Issue Tracker • Rechnungen aus der Zeiterfassung • Einführung Continuous Integration • Deployment über Jenkins • Automatischer Setup für neue Mitarbeiter / Server bei Kunden • Dokumentation: OTIS • Architektur Übersicht, Kunden Übersicht, Checklisten für häufige Aufgaben • Projekt-Management: Cross-Project Plan • Kommunikation: Gruppen Chats 20.10.2016 102 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 87

Slide 87 text

20.10.2016 103 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 88

Slide 88 text

Ausblick • https://goo.gl/DFyKgb 20.10.2016 104 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 89

Slide 89 text

20.10.2016 108 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 90

Slide 90 text

Empfehlenswerte Vorträge • Holly Cummins - Confessions of an Automation Addict • Sven Peters - Rise of the Machines 20.10.2016 109 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

Slide 91

Slide 91 text

Slides & Code: https://rgra.github.io Twitter: @rgransberger Feedback Willkommen! 20.10.2016 110 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)