PBeM-Spiele
Aktuelle Zeit: 28.03.2024 15:22

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 11.12.2014 10:56 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2152
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
Hallo Eressea,

ein Problem aus der Frühzeit von Eressea war immer, das wir so schlechtes Release-Management gemacht haben. Jede Änderung am Source ist direkt in das Spiel eingeflossen, mit Abstürzen, Bugs und Neuauswertung als Folge. Damit ist seit diesem Jahr Schluss, und ich wollte mal erklären, wie das jetzt läuft.

Der Code für den Server ist auf github gehostet, im Repository eressea/server. Im master Branch des Repositories liegt die neueste Version mit denn jeweils letzten Änderungen. Früher hätte ich direkt mit dieser Version ausgewertet. Inzwischen habe ich mich aber zu mehrwöchigen Release-Zyklen durchgerungen.

Das bedeutet, eine Änderung durchläuft jetzt mehrere Phasen: Zuerst schreibe ich sie in einem privaten Fork des Repositories, und teste sie so gut ich kann. Der C Code von Eressea hat mehrere hunderte Unit-Tests, die dafür sorgen, das existierende Funktionalität nicht kaputt geht, und neue Funktionalität das tut, was ich erwarte. Außerdem habe ich natürlich die Live-Daten des Spieles, mit denen ich einen vollen Funktionstest machen kann. Wenn ich einen neuen Crash eingebaut habe, ist es fast sicher, das irgendeine der Eressea-Parteien ihn in den nächste 1-2 Wochen auslösen wird...

Wenn der Code gut aussieht, mache ich einen pull request gegen das ursprüngliche Repository. Der neue Code fließt in den master Branch des Servers ein, wo er nach der nächsten Auswertung für einen Test-Reprt benutzt wird, der einer Handvoll freiwilligen Spielern zugeschickt wird. Diese vergleichen den Report mit ihrem regulären, und melden mir eventuelle Unterschiede, falls sich doch noch ein Bug eingeschlichen hat. Noch einmal vielen Dank an Euch, Leute!

Nachdem der Code eine Weile gereift ist, und genug Augen auf ihn geschaut haben, mache ich ein neues Release. Dafür mache ich im Repository einen Branch (z.B. version-3-3), und kompiliere einen neuen Server basierend darauf. Die Auswertung der kommenden Wochen basiert dann auf diesem Server, und jedwede weitere Änderungen am master Branch haben keine Auswirkungen. Falls sich aber doch noch ein Crash oder grober Schnitzer in den neuen Code eingeschlichen hat, korrigiere ich ihn innerhalb des neuen Branches, und merge anschließend den Branch zurück in den master.

Damit sind wir auch schon bei den Versionsnummern. Die aktuelle Version von Eressea ist 3.3. Ich habe mit der Major-Version 3 begonnen, als ich dieses System eingeführt habe, und die Minor-Version erhöhe ich mit jedem Release. Im CR der kommenden Woche wird die Versionsnummer im Feld VERSION/Build stehen, gemeinsam mit einer Build-Nummer, die ich manuell erhöhe wann immer ich ein neues Release kompiliere. In der Testauswertung steht heißt die Versionsnummer bereits 3.4, da diese ja eine Vorschau auf die kommende Version ist. Die Build-Nummer wird leider nicht regelmäßig aktualisiert, weil ich das bei Gelegenheit mal automatisieren müsste.

In Mantis habe ich bisher die Build-Nummer im Versionsfeld benutzt, aber da die eher unzuverlässig ist, ersetze ich sie jetzt für die Zukunft mit der Versionsnummer. Beim Melden eines Bugs gebt bitte die zweistellige Versionsnummer an, in der das Problem aufgetreten ist.

Das System ist nicht perfekt, aber es ist ein Fortschritt gegenüber dem, was ich viele Jahre lang gemacht habe. Ich hoffe, die Anzahl der verspäteten Auswertungen wird dadurch reduziert, und die Anzahl der Neuauswertungen sowieso.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: 12.12.2014 13:04 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2152
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
Angesichts der Katastrophe von dieser Woche erscheint das obige Posting eher wie ein schlechter Witz, ich weiss... Aber was da gerade passiert ist, ist genau das Problem, das mit neuem ungetesteten Code passiert. Wenn ich mich an meine eigenen Regeln gehalten hätte (nur mit dem stabilen Code auswerten, neuen Code ein paar Wochen testen, ordentliche Backups machen), und keine dummen Fehler gemacht (Datenfile überschreiben), dann wäre das alles nicht passiert.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 77 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
Webhosting by sunrise design ohg