Automatisierung des Softwareentwicklungsprozesses

Automatisierung des Softwareentwicklungsprozesses

Java Forum Nord, 2016

363cf27411356afc37199a73bb58bcfe?s=128

Rabea Gransberger

October 20, 2016
Tweet

Transcript

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

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

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

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

    Dev Automatisierung (Rabea Gransberger @rgransberger) https://www.flickr.com/photos/tormentalous/18517867464
  6. 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 6

  7. 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)
  8. 20.10.2016 10 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

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

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

  11. 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
  12. 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)
  13. 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
  14. 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)
  15. 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
  16. IDE: Eclipse 20.10.2016 18 JFN / Dev Automatisierung (Rabea Gransberger

    @rgransberger) Plugins Eclipse Version Lombok Dynamic Working Set Eclipse Ini Target Platform Einstellungen
  17. 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 19

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

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

  20. 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
  21. Deployment 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 23

  22. 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
  23. 20.10.2016 25 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

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

  25. 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)
  26. 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
  27. 20.10.2016 29 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

  28. Automatisierung • Produkt bauen und zippen • Hochladen • Datenbankbackup

    • Updates: Windows & Java • OTIS Update 20.10.2016 30 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)
  29. Build 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 31

  30. 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)
  31. 20.10.2016 33 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

  32. 3 TAGE SPÄTER 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger

    @rgransberger) 34
  33. 20.10.2016 35 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) build.zip

    3 min statt 15 min!
  34. 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger) 36

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

  36. 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
  37. 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
  38. Auto Update 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

    40
  39. 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
  40. 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
  41. 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
  42. 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)
  43. Release Notes 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

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

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

  46. Release Notes 20.10.2016 49 JFN / Dev Automatisierung (Rabea Gransberger

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

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

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

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

  51. 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)
  52. System Health 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

    56
  53. System Monitoring • Laufen Entwicklersysteme • Laufen Kundensysteme • Gibt

    es Fehler bei der Ausführung? 20.10.2016 57 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)
  54. 20.10.2016 58 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

  55. Program Health 20.10.2016 61 JFN / Dev Automatisierung (Rabea Gransberger

    @rgransberger)
  56. OTIS Server Jobs • Laufen im Hintergrund 20.10.2016 62 JFN

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

  58. 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
  59. Nach Hause Telefonieren • Status Mail 1x pro Stunde 20.10.2016

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

    => 240Mails am Tag 20.10.2016 66 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)
  61. Läuft nicht! 20.10.2016 67 JFN / Dev Automatisierung (Rabea Gransberger

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

    69
  63. Bug Reports 20.10.2016 70 JFN / Dev Automatisierung (Rabea Gransberger

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

    Fehler • Stracktrace Deduplication • Issue Tracker Anbindung 20.10.2016 73 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)
  66. Incident Report 20.10.2016 74 JFN / Dev Automatisierung (Rabea Gransberger

    @rgransberger) https://demo.ctrlflow.com
  67. • Fehlerdetail 20.10.2016 75 JFN / Dev Automatisierung (Rabea Gransberger

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

  69. 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)
  70. 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 <doc@example.com> An introduction to http://asciidoc.org[AsciiDoc]. == First Section * item 1 * item 2
  71. AsciiDoc • docx mit zip entpacken: word/media Bilder rauskopieren 20.10.2016

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

    @rgransberger)
  73. 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
  74. Continuous Integration 20.10.2016 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

    87
  75. Jenkins • Automatische Builds • Ausführung von Tests • Who

    Broke the Build? • Deployment Pipelines 20.10.2016 88 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)
  76. 20.10.2016 90 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

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

    91
  78. 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)
  79. 20.10.2016 93 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

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

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

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

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

  84. 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)
  85. 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)
  86. 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)
  87. 20.10.2016 103 JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)

  88. Ausblick • https://goo.gl/DFyKgb 20.10.2016 104 JFN / Dev Automatisierung (Rabea

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

  90. 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)
  91. Slides & Code: https://rgra.github.io Twitter: @rgransberger Feedback Willkommen! 20.10.2016 110

    JFN / Dev Automatisierung (Rabea Gransberger @rgransberger)