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 optimal (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 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 * Voraussichtliches Releasedatum im changelog eintragen
202 Siehe oben für mögliche Ergebnisse.
204 * Alle Änderungen einchecken.
211 * Annotated tag erstellen und pushen
213 $ git tag -a release-3.0.0
214 $ git push origin tags/release-3.0.0
218 Commits mit Tags können von github als Archiv heruntergeladen werden:
219 https://github.com/kivitendo/kivitendo-erp/releases
221 * Tarball testen, wird das richtig entpackt?
223 * SHA1 und MD5 von tarball machen und in *.sha1 bzw. *.md5 speichern
225 * Alles auf Sourceforge hochladen
227 * Auf Sourceforge den Standarddownloadlink setzen
229 * Releasemessages schreiben für folgende Ziele:
231 - kivitendo.de: deutsch, prosa, formell
232 - freecode.com: englisch, max 600 zeichen, technische stichpunkte aus dem changelog (ehemals freshmeat.net)
233 - Mailinglisten: deutsch, freitext, informell
235 * Alle Releasemessages von mindestens einer Person Korrektur lesen lassen
237 * Webseite aktualisieren, Releasemessages auf freecode und Mailinglisten posten
243 * Im Trac die aktuelle Version ergänzen, damit dafür Bugs eingespielt werden
246 * Nach einem Major Release alle Bugs, die den Milestone hatten und nicht gefixt