2016-04-28 6 views
1

Ich habe zwei Apps, die für die Bereitstellung mit capistrano konfiguriert sind und beide gut einzeln bereitstellen, aber ich möchte Releases erstellen, bei denen beide Apps zusammen bereitgestellt werden müssen.Mehrere App zusammen bereitstellen

Wenn es eine Lösung gibt, um mehrere capistrano zusammen zu deployen und Zweige auszuwählen?

Ich versuchte caphub habe, aber es funktioniert nicht für mich, ich diese:

cap aborted! 
NoMethodError: undefined method `gsub' for #<Proc:0x007f870bf5a8e0> 

ich ein Bash-Skript alle bereitstellen können, aber es ist etwas besser?

Antwort

0

Versuchen Sie, in Git Submodules zu suchen.

Grundsätzlich wählen Sie 1 Hauptrepo und haben den Rest als Submodule, auf diese Weise zieht Capistrano nur von einem Git Repo = Atomic Deploy.

Es wird nicht wirklich die Repos zusammenführen, jeder wird seinen eigenen Commit-Verlauf wie zuvor haben.
Der Code der Submodule erscheint unter dem Hauptverzeichnis des Hauptmoduls.

Wenn sich also alle Ihre Apps auf demselben Server befinden, könnte dies eine gute Lösung sein.

0

Nun, es gibt einen besseren Ansatz, wenn Sie die Konfiguration für Capistrano in Ihren Projekten behalten möchten, aber trotzdem in der Lage sein möchten, sie parallel zu implementieren.

Dies funktioniert auch, wenn die beiden Projekte verwenden unterschiedliche Versionen von Capistrano (2.x und 3.x)

Sie brauchen nur vier einfache Schritte zu tun:

1) Führen Sie diesen Befehl aus Terminal în irgendein Verzeichnis. Aber vergewissere dich, dass du ruby> = 2.2 hast.

gem install capistrano_multiconfig_parallel -v 2.4.O

2) eine YAML-Datei in Ihrem Home-Verzeichnis (/ home/username) mit dem Namen 'multi_cap.yml'

3) Lesen Sie diese readme https://github.com/bogdanRada/capistrano_multiconfig_parallel und setzen erstellen alle Konfigurationen in diesem. Datei.

4) Führen Sie Ihren Einsatz wie in der Readme-Datei gezeigt parallel aus.

Mit diesem Juwel können Sie eine Anwendung gleichzeitig auf mehreren Ebenen bereitstellen.

Und Sie können zur Laufzeit verschiedene Zweige angeben.

Aber bevor Sie das alles tun. Sie müssen sicherstellen, dass jede Aufgabe keine Ressource (Datei) verwendet, die auch von einer anderen Aufgabe verwendet wird, oder Sie befinden sich in einer Sackgasse.

:)

+0

Haftungsausschluss Genießen: Ich bin der Besitzer des Edelsteins :) –

+0

, dass dieses Juwel mit Caphub js auch compatibile zu erwähnen vergessen. Wenn Sie lieber ein zentralisiertes System verwenden, wird das auch funktionieren :) –

+0

Und es gibt noch andere Funktionen wie die Synchronisierung der Bereitstellungen, um auf einander zu warten, bis sie denselben Zustand erreichen, und dann die Bereitstellung fortzusetzen. Und es erkennt automatisch, wenn die Bereitstellung nicht funktioniert hat, und versucht, sie rückgängig zu machen. –