2009-09-21 8 views
9

Ich habe eine Remote-Git-Repository-Setup für die zentrale Entwicklung in meinem Team. Auf dem Produktionsserver, auf dem wir unsere Anwendungen bereitstellen, wird jedoch derzeit keine git ausgeführt. Wir möchten capistrano einsetzen, um unsere Anwendungen bereitzustellen. Wie können wir unsere Bereitstellungsrezepte einrichten, um sie bei der Bereitstellung aus den Remote-Git-Repositories zu "ziehen"?Deployment mit Capistrano mit Remote-Git Repo aber ohne Git läuft auf Produktionsserver

Mit anderen Worten kann ich so etwas tun?

set :repository, "myserver.com/git/#{application}.git" 
set :scm, "git" 
set :deploy_via, :copy 

Antwort

16

Die Lösung in Ihrer Frage ist nahezu korrekt. Sie müssen Ihr git-Repository jedoch etwas anders angeben. Was Sie brauchen, ist:

set :repository, "[email protected]:/home/myproject" 
set :scm, "git" 
set :deploy_via, :copy 

Es gibt weitere Beispiele dafür, wie git Bereitstellung in Capistrano Juwel unter lib/capistrano/recipes/deploy/scm/git.rb einzurichten.

Was passiert, wenn Sie die copy deploy Strategie ist, dass Capistrano Ihre git Repo-Klone /tmp auf dem lokalen Computer, Teeren & Reißverschlüsse das Ergebnis, und überträgt sie dann auf den Server via SFTP. Die Kopierstrategie unterstützt auch das Kopieren über Scp, aber es gibt keine Möglichkeit, dies zu tun, ohne ein wenig in der Quelle herumzuhacken.

0

Haben Sie so etwas wie

versucht
set :repository, "myserver.com/git/#{application}" 
set :scm, :none 
set :deploy_via, :copy 

Ich habe noch nie versucht, aber das scheint die Art von Ansatz zu sein, Sie über die Verwendung zu gehen brauchen würde. Ein wenig mehr Einblick in die Capistrano RDocs.

+0

Ich echo dies. Verwenden von: Kopieren ist die einzige Option, die Sie haben, es sei denn, Sie installieren einen Git-Client auf Ihrem Server. –

+0

Wenn Sie 'scm' auf" none "setzen, wird nur eine Kopie des Inhalts Ihres lokalen Rechners kopiert und auf den Server übertragen, anstatt lokal einen Git-Klon zu erstellen und diesen zu übertragen. – Emily

+3

Eigentlich, auf den zweiten Blick, wird das scheitern. Wenn Sie 'scm' auf none setzen, wird' repository' als Verzeichnispfad und nicht als URL erwartet. Ihre Lösung sucht auf dem lokalen Rechner nach dem Verzeichnis 'myserver.com'. Wenn 'scm' keins ist, setzen Sie normalerweise' repository' auf '.'' – Emily

Verwandte Themen