2009-09-21 5 views
9

J'ai une configuration de dépôt git à distance pour le développement centralisé au sein de mon équipe. Cependant, le serveur de production sur lequel nous déployons actuellement nos applications ne fonctionne pas sur git. Nous voulons utiliser Capistrano pour déployer nos applications. Comment pouvons-nous configurer nos recettes de déploiement pour qu'elles soient extraites des dépôts git distants lors du déploiement?déploiement avec Capistrano avec Git Repo distant mais sans git en cours d'exécution sur le serveur de production

En d'autres termes, puis-je faire quelque chose comme ça?

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

Répondre

16

La solution dans votre question est proche de corriger. Cependant, vous devrez spécifier votre référentiel git différemment. Qu'est-ce que vous avez besoin est:

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

Il y a d'autres exemples de la façon de mettre en place le déploiement git dans votre bijou Capistrano sous lib/capistrano/recipes/deploy/scm/git.rb.

Qu'est-ce qui se passe lorsque vous utilisez la stratégie copy deploy est que Capistrano votre clone git à /tmp sur votre machine locale, goudrons & zips le résultat, puis il transfère au serveur via SFTP. La stratégie de copie prend également en charge la copie via scp, mais il n'y a aucun moyen de lui dire de le faire sans pirater un peu la source.

0

Avez-vous essayé quelque chose comme

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

Je ne l'ai jamais essayé, mais cela semble être le genre d'approche que vous auriez besoin d'aller sur l'utilisation. Un peu plus de perspicacité dans le Capistrano RDocs.

+0

Je fais écho à ceci. Utilisation: La copie est à peu près la seule option que vous avez sauf si vous installez un client git sur votre serveur. –

+0

Si vous définissez 'scm' à none, il suffit de compresser une copie de tout ce qui se trouve sur votre machine locale et de la transférer au serveur au lieu de faire un clone git localement et de le transférer. – Emily

+3

En fait, au second coup d'œil, cela échouera. Lorsque vous définissez 'scm' sur none,' repository' est supposé être un chemin de répertoire, pas une URL. Votre solution recherchera le répertoire 'myserver.com' sur la machine locale. Habituellement, quand 'scm' est none, vous définissez' repository' à ''.'' – Emily

Questions connexes