1 Dieses Dokument listet die Arbeiten die für ein Lx-Office Release nötig sind,
 
   2 als freundliche Checkliste zum Ausdrucken und Erweitern.
 
   7 * Etwa zwei Monate vor dem Release gibt es meistens einen Bugsprint.
 
   9 * Nach dem Bugsprint sollten alle Bugs die noch gefixt werden müssen mit einem
 
  10   Target versehen werden.
 
  12 * Neue Bugs nach dem Bugsprint werden später separat behandelt.
 
  14 * Etwa einen Monat vor dem Release wird eine Beta herausgegeben.
 
  16 * (TODO: Release Candidates Zeitplan).
 
  20 1. KONSISTENZ DES PROGRAMMS
 
  21 ===========================
 
  23 * Testlauf mit t/test.pl
 
  24   Benutzer und Mandant muss hierfür entsprechend in kivitendo.conf > Abschnitt testing
 
  27   - Im Moment sind 3 Fehler optional (die sind noch nicht angegangen):
 
  28     o  bin/mozilla/ic.pl contains at least 123 html tags.
 
  29   - Einige Tests setzen eine korrekt aufgesetzte Datenbank für tests voraus.
 
  30     TODO: diese Tests korrekt skippen wenn keine DB gefunden wurde.
 
  31     TODO: Dokumentieren wie der Releasemanager sich so eine DB baut, die
 
  32           sollten vor einem Release zumindest durchlaufen.
 
  33     TODO: Evtl eine Klasse von Releasetests einführen)
 
  35 * Testinstallation aus dem git mit neuer auth Datenbank.
 
  37   - Änderungen, die die auth Systeme betreffen, zerreissen gerne mal die initiale
 
  40 * Testupgrade auf einer Vorversion.
 
  42   - Dito nur mit Upgradescripten. Fehlerhafte Abhängigkeiten können dazu
 
  43     führen, dass Upgradescripte nicht in der richtigen Reihenfolge ausgeführt
 
  44     werden, was bei inkrementellem Testen nicht auffällt.
 
  46 * Freeze auf der Mailingliste ansagen.
 
  48   - Featurefreeze für beta
 
  49   - Commitfreeze für finales Release (Erfahrungswerte: 1 Tag für die erste
 
  50     Beta, 2-4h für jedes weitere Release, 1 Tag fürs finale Release)
 
  54   - Aus dem Bugsprint sollten keine Bugs mit Target der neuen Version mehr
 
  55     offen sein, ist aber unrealistisch. Die noch offenen Bugs müssen bewertet
 
  56     werden. Kritische Bugs müssen behoben, weniger kritische evtl auf die
 
  57     nächste Version verschoben werden.
 
  58   - Neue Bugs seit dem Bugsprint müssen bewertet, gegebenenfalls behoben
 
  60   - Sollten noch schwere Probleme existieren, Release verschieben.
 
  62 * Changelog aktualisieren.
 
  64   - Im Changelog sollten sämtliche behobenen Bugs seit der letzten Version
 
  67     Beispiel für semiautomatisches bearbeiten:
 
  69     o Letztes Releasedatum: git log --pretty=format:%cd <release-tag> | head -1
 
  70     o Alle Bugs seitdem mit Trac suchen ("Tickets anzeigen" ->
 
  71       "Individuelle Abfrage"):
 
  73       + Geändert: zwischen <letztes Releasedatum> und <heute>
 
  74       + Lösung: [x] behoben  [x] Duplikat  [x] funktioniert-bei-mir
 
  75       + Komponente: ist kivitendo ERP
 
  76       + Spalten: [x] Zusammenfassung
 
  77     o sortieren nach Ticketnummer
 
  78     o copy&paste in eine Datei
 
  79     o perl -pale '$_="  - Bugfix $F[0]: @F[1..$#F]"' oder awk/sed drüber
 
  81     Achtung: Trac hat im Moment noch Probleme, so dass Bugs zum Teil mit nicht
 
  82     existenten Lösungen geschlossen werden.  Besser ist es, sich die Lösung als
 
  83     eigene Spalte anzeigen zu lassen, die Lösungen zu filtern, die nicht
 
  84     erwünscht sind, und den Rest zu formatieren (TODO: Script erweitern)
 
  86     Achtung: Trac benutzt Datum 00:00:00 als obere Grenze, dass heißt, immer
 
  87     einen Tag mehr angeben.
 
  89   - Ausserdem einmal durch das git scrollen und sinnvolle größere Änderungen
 
  90     ins changelog übertragen. Muss nur einmal gemacht werden, möglichst danach
 
  91     nur noch inkrementell.
 
  93 * Perlabhängigkeiten prüfen
 
  97   Die Ausgabe zeigt alle "use *", "use parent qw()" etc an, und
 
  98   sucht nach Abhängigkeiten dadrin. Achtung: require wird im Moment nicht
 
  99   erkannt. Die Farbcodes bedeuten:
 
 101   grün: Alles gut, das Modul ist entweder seit Ewigkeiten im Perl core, oder
 
 102         ist in modules/* dabei.
 
 103   gelb: Das Modul ist nach 5.8.0 in den Core gekommen, oder steht ordnungsgemäß
 
 104         im InstallationCheck.pm
 
 105   rot:  Noch nie gesehen das Modul. Muss eingepflegt werden.
 
 107   Sollte es nicht dokumentierte Abhängigkeiten geben, muss Folgendes gemacht
 
 110   1. Wo kriegt man das Modul her?
 
 113     - CPAN-Devel-Version?
 
 115   2. Welche Mindestversion funktioniert sicher?
 
 116     - zumindest deine aktuelle. Ansonsten auch mal im CPAN Changelog schauen, wie
 
 117       alt die ist, und was alles dazugekommen ist.
 
 119   3. Das Modul in SL/InstallationCheck.pm eintragen. Testen.
 
 121   4. Das Modul in der Installationsanleitung (documentation.xml) eintragen.
 
 123 * doc/UPGRADE doku aktualisieren und auf Vollständigkeit prüfen.
 
 125   Upgrade muss mindestens folgende Informationen enthalten:
 
 126   - Neue Pakete und Abhängigkeiten
 
 127   - Alles was nicht in der normalen Updatedoku steht und nötig ist, um eine
 
 128     Version bis zum erfolgreichen Login der neuen Version zu kriegen.
 
 129   - Bekannte Probleme die im testing auftraten dokumentieren.
 
 131 * doc/kivitendo-Dokumentation.pdf erstellen
 
 132   - ggf. muss hier noch dobudish installiert werden, s.a. Entwicklerdokumentation ->
 
 133     Dokumentation erstellen. Ansonsten reicht dieser Aufruf:
 
 134   $ scripts/build_doc.sh
 
 136 * scripts/rose_auto_create_model.pl update machen.
 
 138   Das ist nicht ganz einfach, dafür gibt es keinen einfachen Knopf. Folgende
 
 139   Constraints sollten eingehalten werden:
 
 141   - Alle Datenbank Upgrades seit der letzten Version müssen eingepflegt werden.
 
 142   - Alle noch nicht normalisierten Tabellen müssen weiterhin ignoriert werden.
 
 143   - Alle Felder, die von der crm, von bob, von lx-cars oder sonstwo in die
 
 144     Datenbank gekommen sind, müssen ignoriert werden.
 
 145   - Wenn die Reihenfolge der Spalten in der Datenbank moniert wird, dann sollte
 
 146     das auch ignoriert werden. (Kann passieren, wenn DB Upgrades in
 
 147     verschiedener Reihenfolge eingespielt werden.)
 
 148   - Wenn Metastatements dazukommen, wie zum Beispiel
 
 149     "allow_inline_column_values => 1," dann ist die Ausgabe der neusten
 
 150     Rose::DB::Object Version zu wählen die kompatibel zu älteren Versionen
 
 153   Zum Prüfen was sich geändert hat eignen sich folgende Befehle:
 
 155   # listet alle Dateien in denen sich etwas ändern würde
 
 156   $ scripts/rose_auto_create_model.pl --client=<name-or-id> -n --all
 
 158   # listet die entsprechenden Diffs:
 
 159   $ scripts/rose_auto_create_model.pl --client=<name-or-id> --diff -n --all
 
 161 * Locales auf Vollständigkeit prüfen
 
 163   $ scripts/locales.pl de
 
 165 * SL::DB::Helper::ALL auf Vollständigkeit prüfen
 
 167   (TODO: Mag da einer ein Script für schreiben?
 
 168      find SL/DB -type f | grep -v MetaSetup | grep -v Helper | grep -v Manager | sort
 
 169    hilft, kriegt aber die Sortierung durcheinander)
 
 173   Zu den Versionierungen ab 3.0.0:
 
 175   - Das Programm heißt kivitendo (alles klein)
 
 176   - Das Paket heißt kivitendo
 
 177   - Der Standardpfad ist kivitendo-<version>
 
 178   - Der git tag ist "release-<version>"
 
 179   - Das DB Upgradescript ist "release_<snake_case_version>"
 
 180   - Die Datei VERSION anpassen
 
 182   Zu den Versionierungen vor 3.0.0:
 
 184   - Das Programm heißt Lx-Office (großes LO, mit Bindestrich dazwischen)
 
 185   - Das Paket heißt lx-office-erp (klein, plus "-erp")
 
 186   - Der Standardpfad ist lxoffice-erp-<version> (fehlender Bindestrich)
 
 187   - Der git tag ist "release-<version>"
 
 188   - Das DB Upgradescript ist "release_<snake_case_version>"
 
 190 * Nur finales Release: Datenbankupgradescript "release_3_0_0" (mit aktueller
 
 191   Releasenummer) erstellen und alle Leafscripte als Abhängigkeit einsetzen.
 
 192   Leafscripte kriegt man mit
 
 194   $ scripts/dbupgrade2_tool.pl --nodeps
 
 196   Wichtig: Seit 3.0.0 gibt es noch zusätzlich ein Pg-Upgrade2-auth/ Verzeichnis, welches
 
 197   für die  Authentifizierungsupdates benutzt wird.
 
 199   $ scripts/dbupgrade2_tool.pl --nodeps --auth-db
 
 201 * Voraussichtliches Releasedatum im changelog eintragen
 
 207   Siehe oben für mögliche Ergebnisse.
 
 209 * Alle Änderungen einchecken.
 
 216 * VERSION auf aktuelle Version setzen
 
 217  - Changelog auf Tagesdatum plus Versionssnummer
 
 218  - dokumentation.xml Versionsnummer anpassen
 
 219  - bei der Datei VERSION Versionsnummer anpassen
 
 222 * Annotated tag erstellen und pushen
 
 224   # falls möglich den Tag mit dem Commit von VERSION setzen (Konvention)
 
 225   $ git tag -a release-3.0.0
 
 226   $ git push origin tags/release-3.0.0
 
 230   Commits mit Tags können von github als Archiv heruntergeladen werden:
 
 231   https://github.com/kivitendo/kivitendo-erp/releases
 
 233 * Releasemessages schreiben für folgende Ziele:
 
 235   - kivitendo.de: deutsch, prosa, formell
 
 236   - Mailinglisten: deutsch, freitext, informell
 
 238 * Alle Releasemessages von mindestens einer Person Korrektur lesen lassen
 
 240 * Webseite aktualisieren, Releasemessages auf freecode und Mailinglisten posten
 
 246 * Im Trac die aktuelle Version ergänzen, damit dafür Bugs eingespielt werden
 
 249 * Nach einem Major Release alle Bugs, die den Milestone hatten und nicht gefixt