Ich bin Teil eines Entwicklungsteams, das an vielen CMS-basierten Projekten arbeitet und Systeme wie Joomla und Drupal verwendet.
In unserem Entwicklungsprozess werden alle unsere Codeänderungen innerhalb von Git verwaltet. Am Ende eines Sprints erstellen wir einen DIFF , den wir über patch auf die Live-Site anwenden können.
Das Problem ist, dass die Änderungen meistens
sindGit Diff handles Quellcode ändert sich wunderschön. Binäre Dateien sind nur in der Diff enthalten, außer als Hinweis darauf, dass sich die Dateien geändert haben.
Datenbankschema-Änderungen und Datenbankdatenänderungen sind ein Chaos.
Ich war am Wandern, wenn etwas wie ein vereinheitlichtes Flecken-System existiert, das verwendet werden könnte, um alle diese Änderungen in einem Flecken zu deployen.
Die Frage ist also, "Gibt es ein System, mit dem all diese Änderungen in einer Aufnahme umgesetzt werden können?
Idealerweise würde dieses System es ermöglichen, einen Trockenlauf wie ein Patch durchzuführen, aber für alle 4 Datentypen.
Bearbeiten : Ich danke Ihnen allen für das Feedback, das Sie mir gegeben haben, es war ein Ausgangspunkt für meine Forschung auf diesem Gebiet.
Hier ist was ich bis jetzt gefunden habe:
Es ist schwierig, php-basiert zu implementieren Anwendungen mit Linux-Verpackung System, weil die Änderungen an der Projekt passiert eher iterativ dann als Releases.
Es wäre möglich, dbconfig zum Bereitstellen von Änderungen an a zu verwenden Projekt, aber das Problem ist mysql db diffs erzeugen (Schema und Daten)
Was wirklich fehlt für die Bereitstellung von php-basierten Anwendungen ist ein Deployment Manager, der würde auf dem Server installiert werden und würde sei die Schnittstelle für die Bereitstellung der Patches
Ich habe eine Google Wave zu diesem Thema gestartet und daraus eine Menge Informationen generiert. Wenn jemand diese Welle lesen möchte, lass es mich wissen und ich werde dich hinzufügen.
Für die Handhabung der Installation und Aktualisierung unserer Anwendung verwenden wir das Debian-Verpackungssystem . (.deb-Paket)
Kontext: Wir machen J2EE + Flex-Anwendung. Versand und Verwaltung über ein VPN. Also nicht so weit von dir entfernt.
Neuinstallation und Aktualisierung für eine Version zu einer anderen erfolgt über puppet (ein System zur Automatisierung von Systemverwaltungsaufgaben: Er installiert unser .deb)
Im .deb haben wir
= Alles für eine neue Installation
Wir fügen auch die Informationen hinzu, um von einer Version zu einer anderen zu gelangen
= & gt; Sobald das .deb korrekt erstellt wurde, können wir nahtlos in einem Vorgang installieren oder upgraden. (Es wird automatisch ohne Aufforderung gemacht).
Theire ist ein .deb pro realease, jedes .deb hat eine Versionsnummer und eine Signatur. Sie können ein beliebiges unserer .deb-Dateien auswählen und eine Neuinstallation oder ein Upgrade von der aktuellen Version auf die von Ihnen gehaltene Versionsnummer durchführen.
Das .deb ist in unserem kontinuierlichen Integrationssystem. (Wir bauen jede Stunde ein .deb, als ob wir gerade eine neue Version veröffentlichen würden)
Was sind die Vorteile?
In Ihrem konkreten Fall
%Vor%Datenbank = & gt; Sie müssen ein Migrationsskript schreiben. Eine für jede Version. (Beispiel: 1.2-update.sql 1.3-update.sql)
Quellcode und binary = & gt; fügen Sie sie hinzu, sagen Sie, in der Version müssen sie kopiert / benutzt werden
Edit: Ich bin mir nicht sicher über den Quellcode. Wir machen das mit kompiliertem Code ...
Einige Links zum Start:
Ссылка (auf Französisch)
[1]: Datei dbconfig
[1]: Ссылка debian
Ich glaube nicht, dass Sie einen ausfallsicheren Mechanismus finden werden.
Ich empfehle Ihnen, wenn möglich, die Kompatibilität mit der aktuell veröffentlichten Quelle zu berücksichtigen, wenn Sie Schema- / Datenänderungen vornehmen.
Auf diese Weise können Sie ein v. einfaches Tool erstellen, das Datenbankskripte ausführt, die an einen bestimmten svn-Speicherort gebunden sind (Sie möchten keine Änderungen an Datenbankänderungen vornehmen, da Sie bei Bedarf weitere Anweisungen benötigen).
Mit dem oben Gesagten können Sie einen einfachen Befehl haben, der die Datenbankänderungen ausführt, dann die binäre & amp; Quellcodeänderungen.
Für die Datenbank gibt es auch die Option von Schema- und Datenvergleichstools, die zum Vergleichen von Umgebungen & amp; vergewissern Sie sich, dass in den Änderungsskripten nichts Unerwartetes fehlt - Sie könnten auch die Änderungsskripte generieren, aber wie gesagt, Sie möchten wirklich sicherstellen, dass die aktuelle Quelle nicht unterbrochen wird.
Sie können ein Tool erstellen, um die Migrationen schmerzfrei durchzuführen - ähnlich wie PeopleSoft Patch Upgrade Assistant.
Es ist im Grunde eine eigenständige ausführbare Datei, die eine "Upgrade-Vorlage" liest und Aufgaben ausführt. Die Upgrade-Vorlage beschreibt deklarativ die Upgrade-Aufgaben oder "Schritte". Die Schritte könnten - Kopieren (zum Sichern oder Verschieben der vorkompilierten Objekte wie Klassen und andere Binärdateien), Datenbank (zum Ändern von Schemaelementen), SQL-Skripte (zum Laden oder Umwandeln aktueller Daten) sein. Die Schritte werden einige Prädikatenlogik-fähig haben - wenn es das ist, tue dies, sonst überspringe es und gehe zum nächsten usw.
Die Vorlage ist normalerweise eine XML-Datei. Es enthält auch manuelle Schritte mit Anweisungen für manuelle Aktionen. Jeder Schritt gibt auch an, ob es wiederherstellbar ist oder nicht. Es würde auch validieren, ob der Schritt erfolgreich war oder nicht.
Es kann möglich sein, ein Open-Source-Projekt um diese Anforderung herum zu haben, was durchaus üblich ist.
Sie müssen Git-Commit-Objekte in der lokalen Datei speichern und sie dann in einen anderen Repo / Zweig importieren.
Tags und Links migration deployment patch