Projekt

Allgemein

Profil

Herunterladen (8,77 KB) Statistiken
| Zweig: | Markierung: | Revision:
385ffe49 Sven Schöling
Dieses Dokument listet die Arbeiten die für ein Lx-Office Release nötig sind,
d058db95 Geoffrey Richardson
als freundliche Checkliste zum Ausdrucken und Erweitern.
385ffe49 Sven Schöling
0. IM VORFELD
=============

* Etwa zwei Monate vor dem Release gibt es meistens einen Bugsprint.

* Nach dem Bugsprint sollten alle Bugs die noch gefixt werden müssen mit einem
Target versehen werden.

* Neue Bugs nach dem Bugsprint werden später separat behandelt.

* Etwa einen Monat vor dem Release wird eine Beta herausgegeben.

8f94be3d Sven Schöling
* (TODO: Release Candidates Zeitplan).
385ffe49 Sven Schöling


1. KONSISTENZ DES PROGRAMMS
===========================

9ea9e4ee Jan Büren
* Testlauf mit t/test.pl
Benutzer und Mandant muss hierfür entsprechend in kivitendo.conf > Abschnitt testing
konfiguriert sein.
27cb9c6a Sven Schöling
f7d8c620 Geoffrey Richardson
- Im Moment sind 3 Fehler optional (die sind noch nicht angegangen):
9ea9e4ee Jan Büren
o bin/mozilla/ic.pl contains at least 123 html tags.
27cb9c6a Sven Schöling
- Einige Tests setzen eine korrekt aufgesetzte Datenbank für tests voraus.
TODO: diese Tests korrekt skippen wenn keine DB gefunden wurde.
5457d1d2 Sven Schöling
TODO: Dokumentieren wie der Releasemanager sich so eine DB baut, die
27cb9c6a Sven Schöling
sollten vor einem Release zumindest durchlaufen.
TODO: Evtl eine Klasse von Releasetests einführen)

* Testinstallation aus dem git mit neuer auth Datenbank.

d058db95 Geoffrey Richardson
- Änderungen, die die auth Systeme betreffen, zerreissen gerne mal die initiale
27cb9c6a Sven Schöling
Installation.

* Testupgrade auf einer Vorversion.

- Dito nur mit Upgradescripten. Fehlerhafte Abhängigkeiten können dazu
führen, dass Upgradescripte nicht in der richtigen Reihenfolge ausgeführt
werden, was bei inkrementellem Testen nicht auffällt.

385ffe49 Sven Schöling
* Freeze auf der Mailingliste ansagen.

- Featurefreeze für beta
5457d1d2 Sven Schöling
- Commitfreeze für finales Release (Erfahrungswerte: 1 Tag für die erste
Beta, 2-4h für jedes weitere Release, 1 Tag fürs finale Release)
385ffe49 Sven Schöling
6c604713 Moritz Bunkus
* Status Trac
385ffe49 Sven Schöling
- Aus dem Bugsprint sollten keine Bugs mit Target der neuen Version mehr
f5aac6db Sven Schöling
offen sein, ist aber unrealistisch. Die noch offenen Bugs müssen bewertet
werden. Kritische Bugs müssen behoben, weniger kritische evtl auf die
nächste Version verschoben werden.
385ffe49 Sven Schöling
- Neue Bugs seit dem Bugsprint müssen bewertet, gegebenenfalls behoben
werden.
- Sollten noch schwere Probleme existieren, Release verschieben.

* Changelog aktualisieren.

- Im Changelog sollten sämtliche behobenen Bugs seit der letzten Version
3965e474 Sven Schöling
aufgeführt sein.

Beispiel für semiautomatisches bearbeiten:

o Letztes Releasedatum: git log --pretty=format:%cd <release-tag> | head -1
6c604713 Moritz Bunkus
o Alle Bugs seitdem mit Trac suchen ("Tickets anzeigen" ->
"Individuelle Abfrage"):
+ Status: [X] closed
+ Geändert: zwischen <letztes Releasedatum> und <heute>
+ Lösung: [x] behoben [x] Duplikat [x] funktioniert-bei-mir
+ Komponente: ist kivitendo ERP
+ Spalten: [x] Zusammenfassung
o sortieren nach Ticketnummer
3965e474 Sven Schöling
o copy&paste in eine Datei
o perl -pale '$_=" - Bugfix $F[0]: @F[1..$#F]"' oder awk/sed drüber

d058db95 Geoffrey Richardson
Achtung: Trac hat im Moment noch Probleme, so dass Bugs zum Teil mit nicht
3a2fcef9 Sven Schöling
existenten Lösungen geschlossen werden. Besser ist es, sich die Lösung als
eigene Spalte anzeigen zu lassen, die Lösungen zu filtern, die nicht
erwünscht sind, und den Rest zu formatieren (TODO: Script erweitern)

6c604713 Moritz Bunkus
Achtung: Trac benutzt Datum 00:00:00 als obere Grenze, dass heißt, immer
3a2fcef9 Sven Schöling
einen Tag mehr angeben.

6c604713 Moritz Bunkus
- Ausserdem einmal durch das git scrollen und sinnvolle größere Änderungen
385ffe49 Sven Schöling
ins changelog übertragen. Muss nur einmal gemacht werden, möglichst danach
nur noch inkrementell.

* Perlabhängigkeiten prüfen

$ scripts/find-use.pl

ee2f4ec6 Sven Schöling
Die Ausgabe zeigt alle "use *", "use parent qw()" etc an, und
sucht nach Abhängigkeiten dadrin. Achtung: require wird im Moment nicht
erkannt. Die Farbcodes bedeuten:
385ffe49 Sven Schöling
6c604713 Moritz Bunkus
grün: Alles gut, das Modul ist entweder seit Ewigkeiten im Perl core, oder
385ffe49 Sven Schöling
ist in modules/* dabei.
6c604713 Moritz Bunkus
gelb: Das Modul ist nach 5.8.0 in den Core gekommen, oder steht ordnungsgemäß
385ffe49 Sven Schöling
im InstallationCheck.pm
6c604713 Moritz Bunkus
rot: Noch nie gesehen das Modul. Muss eingepflegt werden.
385ffe49 Sven Schöling
Sollte es nicht dokumentierte Abhängigkeiten geben, muss Folgendes gemacht
werden:

1. Wo kriegt man das Modul her?
6c604713 Moritz Bunkus
- Debian-Paket?
- CPAN-Paket?
- CPAN-Devel-Version?
385ffe49 Sven Schöling
2. Welche Mindestversion funktioniert sicher?
d058db95 Geoffrey Richardson
- zumindest deine aktuelle. Ansonsten auch mal im CPAN Changelog schauen, wie
385ffe49 Sven Schöling
alt die ist, und was alles dazugekommen ist.

3. Das Modul in SL/InstallationCheck.pm eintragen. Testen.

8a1f99fd Jan Büren
4. Das Modul in der Installationsanleitung (documentation.xml) eintragen.
385ffe49 Sven Schöling
* doc/UPGRADE doku aktualisieren und auf Vollständigkeit prüfen.

Upgrade muss mindestens folgende Informationen enthalten:
- Neue Pakete und Abhängigkeiten
- Alles was nicht in der normalen Updatedoku steht und nötig ist, um eine
Version bis zum erfolgreichen Login der neuen Version zu kriegen.
- Bekannte Probleme die im testing auftraten dokumentieren.

6c604713 Moritz Bunkus
* doc/kivitendo-Dokumentation.pdf erstellen
60608be3 Jan Büren
- ggf. muss hier noch dobudish installiert werden, s.a. Entwicklerdokumentation ->
Dokumentation erstellen. Ansonsten reicht dieser Aufruf:
$ scripts/build_doc.sh
385ffe49 Sven Schöling
* scripts/rose_auto_create_model.pl update machen.

Das ist nicht ganz einfach, dafür gibt es keinen einfachen Knopf. Folgende
Constraints sollten eingehalten werden:

- Alle Datenbank Upgrades seit der letzten Version müssen eingepflegt werden.
- Alle noch nicht normalisierten Tabellen müssen weiterhin ignoriert werden.
d058db95 Geoffrey Richardson
- Alle Felder, die von der crm, von bob, von lx-cars oder sonstwo in die
385ffe49 Sven Schöling
Datenbank gekommen sind, müssen ignoriert werden.
- Wenn die Reihenfolge der Spalten in der Datenbank moniert wird, dann sollte
das auch ignoriert werden. (Kann passieren, wenn DB Upgrades in
verschiedener Reihenfolge eingespielt werden.)
- Wenn Metastatements dazukommen, wie zum Beispiel
"allow_inline_column_values => 1," dann ist die Ausgabe der neusten
Rose::DB::Object Version zu wählen die kompatibel zu älteren Versionen
bleibt.

Zum Prüfen was sich geändert hat eignen sich folgende Befehle:

d058db95 Geoffrey Richardson
# listet alle Dateien in denen sich etwas ändern würde
$ scripts/rose_auto_create_model.pl --client=<name-or-id> -n --all
385ffe49 Sven Schöling
# listet die entsprechenden Diffs:
d058db95 Geoffrey Richardson
$ scripts/rose_auto_create_model.pl --client=<name-or-id> --diff -n --all
385ffe49 Sven Schöling
b5700901 Sven Schöling
* Locales auf Vollständigkeit prüfen

$ scripts/locales.pl de

385ffe49 Sven Schöling
* SL::DB::Helper::ALL auf Vollständigkeit prüfen

ec1daa3d Sven Schöling
(TODO: Mag da einer ein Script für schreiben?
find SL/DB -type f | grep -v MetaSetup | grep -v Helper | grep -v Manager | sort
hilft, kriegt aber die Sortierung durcheinander)
385ffe49 Sven Schöling
* VERSION updaten

1857ca9d Sven Schöling
Zu den Versionierungen ab 3.0.0:

- Das Programm heißt kivitendo (alles klein)
- Das Paket heißt kivitendo
- Der Standardpfad ist kivitendo-<version>
- Der git tag ist "release-<version>"
- Das DB Upgradescript ist "release_<snake_case_version>"
ef840a08 Jan Büren
- Die Datei VERSION anpassen
385ffe49 Sven Schöling
6c604713 Moritz Bunkus
Zu den Versionierungen vor 3.0.0:

- Das Programm heißt Lx-Office (großes LO, mit Bindestrich dazwischen)
- Das Paket heißt lx-office-erp (klein, plus "-erp")
- Der Standardpfad ist lxoffice-erp-<version> (fehlender Bindestrich)
- Der git tag ist "release-<version>"
- Das DB Upgradescript ist "release_<snake_case_version>"

* Nur finales Release: Datenbankupgradescript "release_3_0_0" (mit aktueller
ec1daa3d Sven Schöling
Releasenummer) erstellen und alle Leafscripte als Abhängigkeit einsetzen.
Leafscripte kriegt man mit
385ffe49 Sven Schöling
$ scripts/dbupgrade2_tool.pl --nodeps

a5d61345 Jan Büren
Wichtig: Seit 3.0.0 gibt es noch zusätzlich ein Pg-Upgrade2-auth/ Verzeichnis, welches
für die Authentifizierungsupdates benutzt wird.

f7d8c620 Geoffrey Richardson
$ scripts/dbupgrade2_tool.pl --nodeps --auth-db

ec1daa3d Sven Schöling
* Voraussichtliches Releasedatum im changelog eintragen
385ffe49 Sven Schöling
* Finaler Testlauf:

bd43eaa8 Geoffrey Richardson
t/test.pl
385ffe49 Sven Schöling
27cb9c6a Sven Schöling
Siehe oben für mögliche Ergebnisse.
385ffe49 Sven Schöling
* Alle Änderungen einchecken.



2. RELEASE
42d575b2 Sven Schöling
==========
385ffe49 Sven Schöling
033c2bbc Jan Büren
* VERSION auf aktuelle Version setzen
- Changelog auf Tagesdatum plus Versionssnummer
- dokumentation.xml Versionsnummer anpassen
- bei der Datei VERSION Versionsnummer anpassen


385ffe49 Sven Schöling
* Annotated tag erstellen und pushen

033c2bbc Jan Büren
# falls möglich den Tag mit dem Commit von VERSION setzen (Konvention)
4f9cbc56 Moritz Bunkus
$ git tag -a release-3.0.0
$ git push origin tags/release-3.0.0
385ffe49 Sven Schöling
* Tarball erstellen

d058db95 Geoffrey Richardson
Commits mit Tags können von github als Archiv heruntergeladen werden:
https://github.com/kivitendo/kivitendo-erp/releases
385ffe49 Sven Schöling
* Releasemessages schreiben für folgende Ziele:

6c604713 Moritz Bunkus
- kivitendo.de: deutsch, prosa, formell
- Mailinglisten: deutsch, freitext, informell
385ffe49 Sven Schöling
* Alle Releasemessages von mindestens einer Person Korrektur lesen lassen

fe421d00 Sven Schöling
* Webseite aktualisieren, Releasemessages auf freecode und Mailinglisten posten
4f42c5f0 Sven Schöling

3. POST RELEASE
42d575b2 Sven Schöling
===============
4f42c5f0 Sven Schöling
d058db95 Geoffrey Richardson
* Im Trac die aktuelle Version ergänzen, damit dafür Bugs eingespielt werden
können.
42d575b2 Sven Schöling
d058db95 Geoffrey Richardson
* Nach einem Major Release alle Bugs, die den Milestone hatten und nicht gefixt
wurden, zurücksetzen