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

Automatisierung des Softwareentwicklungsprozesses

Automatisierung des Softwareentwicklungsprozesses

Java Forum Nord, 2016

Avatar for Rabea Gransberger

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)