Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Automatisierung des Softwareentwicklungsprozesses

Automatisierung des Softwareentwicklungsprozesses

Java Forum Nord, 2016

Rabea Gransberger

October 20, 2016
Tweet

More Decks by Rabea Gransberger

Other Decks in Programming

Transcript

  1. 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)
  2. Eure Ideen zur Automatisierung ? #jfnauto 20.10.2016 5 JFN /

    Dev Automatisierung (Rabea Gransberger @rgransberger) https://www.flickr.com/photos/tormentalous/18517867464
  3. 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)
  4. 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
  5. 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)
  6. 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
  7. 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)
  8. 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
  9. IDE: Eclipse 20.10.2016 18 JFN / Dev Automatisierung (Rabea Gransberger

    @rgransberger) Plugins Eclipse Version Lombok Dynamic Working Set Eclipse Ini Target Platform Einstellungen
  10. 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
  11. 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
  12. 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)
  13. 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
  14. Automatisierung • Produkt bauen und zippen • Hochladen • Datenbankbackup

    • Updates: Windows & Java • OTIS Update 20.10.2016 30 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)
  15. 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)
  16. 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
  17. Delegierende Exe • Symbolic Links oder • „Delegierende Exe“ 20.10.2016

    39 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) set /p Build=<build\build.txt set target=build\%Build% START %target%\OTIS.exe /D %target% %* OTIS-Server | OTIS.exe +---build | | build.txt | +---20160810_149 | | | OTIS.exe | | | OTIS.ini | | +---configuration | | +---features | | +---logs | | +---plugins | | | +---20160922_153 | | | OTIS.exe | | | OTIS.ini | | +---configuration | | +---features | | +---logs | | +---plugins 20160922_153
  18. 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
  19. 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
  20. 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
  21. 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)
  22. 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)
  23. System Monitoring • Laufen Entwicklersysteme • Laufen Kundensysteme • Gibt

    es Fehler bei der Ausführung? 20.10.2016 57 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)
  24. OTIS Server Jobs • Laufen im Hintergrund 20.10.2016 62 JFN

    / Dev Automatisierung (Rabea Gransberger @rgransberger)
  25. 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
  26. Nach Hause Telefonieren • Status Mail 1x pro Stunde 20.10.2016

    65 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)
  27. Läuft? • 10 Kunden -> 10 Mails pro Stunde •

    => 240Mails am Tag 20.10.2016 66 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)
  28. Bug Reports 20.10.2016 70 JFN / Dev Automatisierung (Rabea Gransberger

    @rgransberger) • Melden Kunden Bugs? • Möglichkeit im Programm anbieten • Support-Client (Teamviewer o.ä.)
  29. 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)
  30. Automatic Error Reporting • u.a. Log4j Appender • Warnungen &

    Fehler • Stracktrace Deduplication • Issue Tracker Anbindung 20.10.2016 73 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)
  31. 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)
  32. 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 <[email protected]> An introduction to http://asciidoc.org[AsciiDoc]. == First Section * item 1 * item 2
  33. AsciiDoc • docx mit zip entpacken: word/media Bilder rauskopieren 20.10.2016

    79 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)
  34. 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
  35. Jenkins • Automatische Builds • Ausführung von Tests • Who

    Broke the Build? • Deployment Pipelines 20.10.2016 88 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)
  36. 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)
  37. 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)
  38. 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)
  39. 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)
  40. 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)