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 * Freeze auf der Mailingliste ansagen.
 
  25   - Featurefreeze für beta
 
  26   - Commitfreeze für finales Release
 
  30   - Aus dem Bugsprint sollten keine Bugs mit Target der neuen Version mehr
 
  32   - Neue Bugs seit dem Bugsprint müssen bewertet, gegebenenfalls behoben
 
  34   - Sollten noch schwere Probleme existieren, Release verschieben.
 
  36 * Changelog aktualisieren.
 
  38   - Im Changelog sollten sämtliche behobenen Bugs seit der letzten Version
 
  41     Beispiel für semiautomatisches bearbeiten:
 
  43     o Letztes Releasedatum: git log --pretty=format:%cd <release-tag> | head -1
 
  44     o Alle Bugs seit dem mit der Buzilla advanced search suchen:
 
  46       + Only bugs changed between <letztes Releasedatum> and Now
 
  47       + where only one or more of the following changed: "Resolution"
 
  48       + and the new value was: "FIXED"
 
  49     o columns ändern auf nur "Full Summary"
 
  50     o copy&paste in eine Datei
 
  51     o perl -pale '$_="  - Bugfix $F[0]: @F[1..$#F]"' oder awk/sed drüber
 
  53   - Ausserdem einmal durch das git scrollen und sinnvolle grössere Änderungen
 
  54     ins changelog übertragen. Muss nur einmal gemacht werden, möglichst danach
 
  55     nur noch inkrementell.
 
  57 * Perlabhängigkeiten prüfen
 
  61   Die Ausgabe zeigt alle "use *", "use parent qw()" etc an, und
 
  62   sucht nach Abhängigkeiten dadrin. Achtung: require wird im Moment nicht
 
  63   erkannt. Die Farbcodes bedeuten:
 
  65   grün: Alles gut, das Modul ist entweder seit Ewigkeiten im perl core, oder
 
  66         ist in modules/* dabei.
 
  67   gelb: Das Modul ist nach 5.8.0 in den core gekommen, oder steht ordnungsgemäß
 
  68         im InstallationCheck.pm
 
  69   rot:  Noch nie gesehen das Modul. muss eingepflegt werden.
 
  71   Sollte es nicht dokumentierte Abhängigkeiten geben, muss Folgendes gemacht
 
  74   1. Wo kriegt man das Modul her?
 
  79   2. Welche Mindestversion funktioniert sicher?
 
  80     - zuindest deine aktuelle. ansonsten auch mal im cpan changelog schauen wie
 
  81       alt die ist, und was alles dazugekommen ist.
 
  83   3. Das Modul in SL/InstallationCheck.pm eintragen. Testen.
 
  85   4. Das Modul in der Installationsanleitung eintragen.
 
  87 * doc/UPGRADE doku aktualisieren und auf Vollständigkeit prüfen.
 
  89   Upgrade muss mindestens folgende Informationen enthalten:
 
  90   - Neue Pakete und Abhängigkeiten
 
  91   - Alles was nicht in der normalen Updatedoku steht und nötig ist, um eine
 
  92     Version bis zum erfolgreichen Login der neuen Version zu kriegen.
 
  93   - Bekannte Probleme die im testing auftraten dokumentieren.
 
  95 * doc/Lx-Office-Dokumentation.pdf erstellen
 
  98 * scripts/rose_auto_create_model.pl update machen.
 
 100   Das ist nicht ganz einfach, dafür gibt es keinen einfachen Knopf. Folgende
 
 101   Constraints sollten eingehalten werden:
 
 103   - Alle Datenbank Upgrades seit der letzten Version müssen eingepflegt werden.
 
 104   - Alle noch nicht normalisierten Tabellen müssen weiterhin ignoriert werden.
 
 105   - Alle Felder die von der crm, von bob, von lx-cars oder sonstwo in die
 
 106     Datenbank gekommen sind, müssen ignoriert werden.
 
 107   - Wenn die Reihenfolge der Spalten in der Datenbank moniert wird, dann sollte
 
 108     das auch ignoriert werden. (Kann passieren, wenn DB Upgrades in
 
 109     verschiedener Reihenfolge eingespielt werden.)
 
 110   - Wenn Metastatements dazukommen, wie zum Beispiel
 
 111     "allow_inline_column_values => 1," dann ist die Ausgabe der neusten
 
 112     Rose::DB::Object Version zu wählen die kompatibel zu älteren Versionen
 
 115   Zum Prüfen was sich geändert hat eignen sich folgende Befehle:
 
 117   # listet alle Dateien in denen sich etwas Ändern würde
 
 118   $ scripts/rose_auto_create_model.pl --user=<login> -n --all
 
 120   # listet die entsprechenden Diffs:
 
 121   $ scripts/rose_auto_create_model.pl --user=<login> --diff -n --all
 
 123 * Locales auf Vollständigkeit prüfen
 
 125   $ scripts/locales.pl de
 
 126   $ scripts/locales.pl de_DE
 
 128 * SL::DB::Helper::ALL auf Vollständigkeit prüfen
 
 130   (TODO: Mag da einer ein Script für schreiben?
 
 131      find SL/DB -type f | grep -v MetaSetup | grep -v Helper | grep -v Manager | sort
 
 132    hilft, kriegt aber die Sortierung durcheinander)
 
 136   Zu den Versionierungen:
 
 138   - Das Programm heißt Lx-Office (großes LO, mit Bindestrich dazwischen)
 
 139   - Das Paket heißt lx-office-erp (klein, plus "-erp")
 
 140   - Der Standardpfad ist lxoffice-erp-<version> (fehlender Bindestrich)
 
 141   - Der git tag ist "release-<version>"
 
 142   - Das DB Ipgradescript ist "release_<snake_case_version>"
 
 144 * Nur finales Release: Datenbankupgradescript "release_2_6_1" (mit aktueller
 
 145   Releasenummer) erstellen und alle Leafscripte als Abhängigkeit einsetzen.
 
 146   Leafscripte kriegt man mit
 
 148   $ scripts/dbupgrade2_tool.pl --nodeps
 
 150 * Voraussichtliches Releasedatum im changelog eintragen
 
 156   - Im Moment sind 4 Fehler optimal (die sind noch nicht angegangen):
 
 157     o  bin/mozilla/ar.pl contains at least 190 html tags.
 
 158     o  bin/mozilla/ic.pl contains at least 130 html tags.
 
 159     o  bin/mozilla/ap.pl contains at least 183 html tags.
 
 160     o  bin/mozilla/admin.pl DOES NOT use proper system or exec calls
 
 161   - Einige Tests setzen eine korrekt aufgesetzte Datenbank für tests voraus.
 
 162     TODO: diese Tests korrekt skippen wenn keine DB gefunden wurde.
 
 163     TODO: Dokumeniteren wie der Releasemanager sich so eine DB baut, die
 
 164           sollten vor einem Release zumindest durchlaufen.
 
 165     TODO: Evtl eine Klasse von Releasetests einführen)
 
 167 * Alle Änderungen einchecken.
 
 174 * Annotated tag erstellen und pushen
 
 176   $ git tag -a release-2.6.1
 
 177   $ git push origin tags/release-2.6.1
 
 181   $ git archive --format=tar --remote=<master repo>        \
 
 182         --prefix=lxoffice-erp-2.6.1/ release-2.6.1 | gzip  \
 
 183         > lx-office-erp-2.6.1.tar.gz
 
 185   (der trailing slash bei prefix ist wichtig)
 
 187 * Tarball testen, wird das richtig entpackt?
 
 189 * SHA1 und MD5 von tarball machen und in *.sha1 bzw. *.md5 speichern
 
 191 * Alles auf Sourceforge hochladen
 
 193 * Auf Sourceforge den Standarddownloadlink setzen
 
 195 * Releasemessages schreiben für folgende Ziele:
 
 197   - lx-office.org: deutsch, prosa, formell
 
 198   - freecode.com: englisch, max 600 zeichen, technische stichpunkte aus dem changelog (ehemals freshmeat.net)
 
 199   - mailinglisten: deutsch, freitext, informell
 
 201 * Alle Releasemessages von mindestens einer Person Korrektur lesen lassen
 
 203 * Webseite aktualisieren, Releasemessages auf freecode und Mailinglisten posten
 
 209 * Im Bugzilla die aktuelle Version ergänzen, damit dafür Bugs eingespielt werden können.
 
 211 * Nach einem Major Release alle Bugs die den Milestone hatten und nicht gefixt wurden zurücksetzen