Hat jemand eine Entwicklung / staging / Bereitstellung von Workflow mit PHP / MySQL? [geschlossen]

StackOverflow https://stackoverflow.com/questions/432162

  •  08-07-2019
  •  | 
  •  

Frage

Ich denke über einen guten Workflow für PHP / MySQL Web-Entwicklung.

Hat jemand ein paar Tipps?

War es hilfreich?

Lösung

Hier ist das, was wir tun:

  1. Jeder arbeitet an ihren Projekten in ihrer Branche (Code, Tests usw.)
  2. Wenn alles gut aussieht, wird es in Trunk zusammengefasst
  3. phpUnderControl Rebuilds Stamm, führt alle unsere PHPUnit Tests baut Dokumentation, aktualisiert db, etc
  4. Wenn alles, was passiert, wir gehen in Stable
  5. Stable wird wie Trunk vollständig umgebaut
  6. Stable wird manuell gefördert unsere Produktionsserver

Wir haben einige benutzerdefinierte Skripts, die aus unserer Datenbank Upgrades und unsere Push-to-Produktion kümmern. Für unsere Datenbank halten wir all Deltas in einem einzelnen Ordner und das Skript überprüft die aktuelle DB-Ebene gegen die verfügbaren Deltas und, falls erforderlich, wenden diese an.

Für die Förderung in die Produktion haben wir ein anderes Skript, das alle Produktionsdaten nach unten zieht und dann läuft rsync Änderungen nach oben zu drücken.

Sie erwähnen nicht, auf welcher Ebene der Kontrolle, die Sie über den Server haben, aber der Gesamtprozess das gleiche für die allgemeine Entwicklung sein würde.

Andere Tipps

Ich denke, jeder hat theese Dinge etwas anders, über die genaue Anwendung abhängig. Hier ist unsere Einstellung:

Vor einer Freigabe:

  • Jeder verpflichtet sich /trunk.
  • Wenn wir eine Release rollen möchten, kopieren wir den Stamm /tags/yymmddhhiiss.
  • Wir stabilisieren den Tag.

Sobald es stabilisiert ist, wir führen das deploy-Skript:

  • Auf dem Produktionsserver, Check-out den neuen Tag.
  • Nehmen Sie einen Dump der Datenbank.
  • Dämonen stoppen und die Web-Anwendung heruntergefahren (s).
  • Schalten Sie den Symlink /current auf die frisch ausgecheckt Tag zeigen.
  • Ausführen Migrationsskripte.
  • Starten Sie Daemons und Anwendungen.

Wenn wir brauchen eine kleine Änderung schnell zu verdrängen, wir führen Sie sich auf den aktuellen Tag, und dann können wir einen viel einfacheren Hotfix-Prozess auf dem Server ausgeführt werden:

  • Dämonen stoppen und die Web-Anwendung heruntergefahren (s).
  • Ausführen svn update
  • Starten Sie Daemons und Anwendungen.

Beachten Sie, dass es bestimmte Tools, die bei der Strukturierung / Automatisierung theese Prozesse ausgerichtet sind. Phing ist, und Symfony hat seine eigene Batch-System , die ein Stand-alone-Projekt genannt werden verwendet, um pake . Und als ob das nicht genug ist, sind Zend Framework über ihre eigene Variante erstellen . Es ist alles wirklich ein bisschen ein Durcheinander, aber Phing ist wahrscheinlich die am weitesten verbreitete. Sie können auch etwas Nicht-PHP-spezifisch, wie zum Beispiel Ant oder Capistrano . Wir verwenden nur Shell-Skripten, die im Grunde das gleiche Bedürfnis erfüllt.

Wir haben auch einen kontinuierlichen Build ausgeführt wird, die aus dem Stamm auscheckt und führt alle Tests. Zur Zeit haben wir nur eine einfache Sammlung von Shell-Skripten, es zu tun, aber wir erwägen wechseln PhpUnderControl oder Xinc .

Die Migrationen Schritt verdient vielleicht ein wenig Erklärung. Theese enthält Änderungen an der Datenbank, sowie andere Aufgaben, die für die neue Version ausgeführt werden müssen. Unsere Wanderungen sind ein bisschen einfach im Moment; Wir haben einfach einen Ordner mit einem Bündel von .php und .sql Skripte und dem während der Migration, im diesem Fall entweder nacheinander ausgeführt werden. Die Art, wie wir verfolgen, welche Änderungen ausgeführt wurde, ist durch die migrations Ordner Entleerung direkt nach einem neuen Tag gemacht wurde. Es wäre wahrscheinlich klüger, um die Datenbank zu verwenden, um sich die Änderungen jedoch ausgeführt worden sind. Wir hielten adoptieren etwas wie ruckusing für diesen Zweck.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top