Migration von Bugzilla nach Mantis

Ausgangslage:

Bugzilla 3.2.2 – aktuell ist gerade die Version 4.0.1. Da Bugzilla in Perl geschrieben ist, benötigt es mit jedem Versionswechsel auch etliche Aktualisierungen der Perl-Module. Das hat sich leider bei unserem Server-Provider als ein mittlerer Alptraum erwiesen – unsere manuellen Aktualisierungen vertragen sich in den seltensten Fällen mit den Serverupdates. Also haben wir Bugzilla nicht mehr angefasst, immerhin läuft es ja in der aktuellen Konstellation.

Aufgabenstellung:

  • Bugzilla ablösen und durch einen Perl-freien Bugtracker ersetzen
  • der gesamte Datenbestand muss erhalten bleiben und sollte möglichst in die neue Lösung überführt werden, um die alte Bugzilla-Instanz komplett vom Netz nehmen zu können

Lösungsansatz: Mantis Bugtracker

Mantis Bugtracker ist komplett in php umgesetzt und braucht im Hintergrund nur eine mySQL Datenbank – damit können wir schonmal auf Perl verzichten :-)

Im Netz habe ich ein Script gefunden, mit dem die Datenbank von Bugzilla in Mantis-Format umgewandelt werden kann. Genau genommen werden die Bugzilladaten einfach in Mantisformat „gedumpt“ und können dann mit phpMyAdmin o.ä. nach Mantis importiert werden. Einziger Nachteil: dieses Skript ist getestet mit Mantis Version 1.0.7. Aktuelle Version ist 1.2.5 und zwischenzeitlich hat es wohl auch Anpassungen an der Datenbank gegeben.

Folgendes ist bei dieser Art der Umstellung noch zu beachten:

  • Berechtigungsprofile können aufgrund der sehr unterschiedlichen Berechtigungskonzepte in Bugzilla und Mantis nicht übernommen werden, hier ist nach der Migration noch Handarbeit gefragt.
  • Inaktive User sind in Mantis erstmal wieder aktiviert und müssen manuell deaktiviert werden.
  • Alle Mantis-User haben nach der Umstellung das gleiche Standardkennwort „root“, auch der Administrator
  • Mantis-User Nr. 1 ist der einzige Administrator, alle anderen müssen manuell wieder mit diesen Rechten versehen werden. Das geht z.B. direkt auf der Datenbank, indem man die entsprechenden Accounts auf access_level 90 setzt.

Die einzelnen Schritte im Detail

  1. Zur Vorbereitung erstmal einen lokalen Webserver aufsetzen (z.B. mit Xampp o.ä.) und darauf Perl, Bugzilla 3.2.2, Mantis 1.0.7, phpMyAdmin (ist bei Xampp schon dabei) und MySQLDumper installieren. Die lokale Installation hat den Vorteil, dass man alle Serverkonfigurationen bezgl. Uploadgrößen, Timeouts etc. nahezu beliebig verändern kann.Nach der Mantis-Installation das admin-Verzeichnis NICHT löschen, das brauchen wir später noch. Umbenennen ist erlaubt ;-)
  2. Kurzen Funktionstest für Bugzilla und Mantis: wenn beim Aufruf die Login-Seite erscheint, war die Installation erfolgreich
  3. Bugzilla-Datenbank komplett von der Produktionsumgebung dumpen und in die lokale Version mit phpMyAdmin importieren; anschließend kurz auf Funktionsfähigkeit testen und ggf. nachbessern.
  4. bugzilla2mantis-3.2.3_fixed.pl im lokalen Bugzilla-Verzeichnis ausführen (vorher natürlich die Zugangsdaten in Zeile 104 eintragen!), es wird im gleichen Verzeichnis ein Dump bugzilla2mantis.sql erzeugt
  5. Die lokale Mantis-DB komplett leeren (nur leeren, nicht die Tabellen löschen!)
  6. Den Bugzilla-User Nr. 1 manuell übertragen (phpMyAdmin: auslesen, Werte in Mantis eintragen; default-Passwort 63a9f0ea7bb98050796b649e85481845 (= root) vergeben)
  7. bugzilla2mantis.sql in die lokale Mantis-DB importieren. Achtung: die Datei ist latin1-codiert!
  8. Mantis-Konfiguration umstellen, damit angehängte Dateien nicht mehr in der Datenbank, sondern direkt auf dem Server gespeichert werden:[codesyntax lang=“php“ title=“config_inc.php“]
    # --- Attachments / File Uploads ---
    $g_allow_file_upload    = ON;
    $g_file_upload_method    = DISK; # or DATABASE
    $g_absolute_path_default_upload_folder = 'files/'; # used with DISK, must contain trailing \ or /.
    $g_max_file_size        = 5000000;    # in bytes
    $g_preview_attachments_inline_max_size = 256 * 1024;
    $g_allowed_files        = 'php,html,exe,pl,pdf,doc,xls,txt,jpg,png,gif,bmp,ppt,zip,tar,gz,7z';        # extensions comma separated, e.g. 'php,html,java,exe,pl'
    $g_disallowed_files        = '';        # extensions comma separated

    [/codesyntax]

    Mehr Angaben zu den einzelnen Parametern stehen im Mantis Manual
    (allerdings fehlen dort ein paar griffige Beispiele und Hinweise, wie genau der Pfad aussehen muss, bspw. mit führendem ./ oder /. Der Pfad kann (muss?) relativ zum Mantis Root angegeben werden wie in meinem Beispiel.)

  9. Alle Anhänge aus der Datenbank auf die Platte verschieben. Das ist nötig, da wir auf dem Zielserver Probleme mit der maximalen SQL Paketgröße haben.
    mantis/admin/system_utils.php bietet eine entsprechende Option – dieser Schritt kann nicht rückgängig gemacht werden!
    Achtung: Durch einen Fehler in Mantis werden die Dateien immer in das Mantis Hauptverzeichnis verschoben, einen Patch dafür gibt es hier.
  10. Jetzte das komplette lokale Mantis sichern, also mit allen Dateien und der Datenbank. Für Datenbank-Backups verwende ich gerne MySQLDumper, die Entwickler haben die Problematik der unterschiedlichen Kollationen und Zeichensätze (Stichwort: UTF-8, ISO-8859-1) sehr gut im Griff.
  11. Die komplette Sicherung auf dem Zielserver aufspielen, Serveradressen, Datenbankzugriff, Pfade, etc. in der config_inc.php entsprechend anpassen.
  12. Mantis ganz kurz auf Funktionsfähigkeit testen – wenn alles bis hier geklappt hat, haben die Bugs die gleichen Nummern wie vorher in Bugzilla, alle Anhänge sind verfügbar und neue Anhänge können ebenfalls hochgeladen werden.
  13. Benutzerrechte anpassen; die Berechtigungen können leider nicht 1:1 aus Bugzilla übernommen werden.
  14. Mantis auf die aktuelle Version aktualisieren
  15. Alle User per Mail auffordern. das Kennwort SOFORT zu ändern.
    (Kann man User in Mantis so sperren, dass ein neues Passwort vergeben werden muß?)

Das war’s. Hoffentlich.

 

NB: Ich habe die Migration noch nicht durchgezogen, sondern bin aktuell noch in der Forschungsphase. Es kann also durchaus sein, dass die hier aufgeführten Schritte noch nicht stimmen…. Sobald mir ein Fehler auffällt, werde ich den Artikel entsprechend aktualisieren.

Gelegenheitsblogger, bekennender Unterstützer der deutschen Bark Alexander von Humboldt II (ab und an in der Bierwerbung einer norddeutschen Brauerei zu sehen) mit einem Faible für Ju-52 und Meer, reist, liest, arbeitet - alles in allem also ziemlich normal.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_smilenew.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_biggrin2.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_sadnew.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_eek.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_shocked.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_confusednew.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_coolnew.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_lol.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_madnew.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_seb_zunge.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_blushnew.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_frown.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil1.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil2.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_rolleyesnew.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_wink2.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_idea2.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_neutral_new.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_biggrin.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_xd.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_xd2.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_ugly.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_freu.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_freu2.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_motz.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_lachtot.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_irre.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_helpnew.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_wallbash.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_gott.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_hurra3.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_skeptisch.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_bravo2.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_pfeif2.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_nicken.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_no_sad.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_aufsmaul.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_doh.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_smilina.gif 
https://the.mnbvcx.net/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_winken4.gif