52 votes

Comment configurer Capistrano pour déployer à partir du dépôt Git local ?

Quels changements dois-je apporter à la deploy.rb ci-dessous pour qu'il déploie mon application à partir d'un dépôt git local ? Si je ne peux pas déployer à partir d'un dépôt local, puis-je faire en sorte que Capistrano utilise la copie de travail à la place ?

set :application, "my_app"
set :repository, "."
set :local_repository, "file:///path/to/application/.git"
set :deploy_to, "/data/www/apps/#{application}"
set :deploy_via, :copy
set :copy_cache, true
set :user, "dane"
set :use_sudo, false

set :scm, :git # Should I change this to :none
set :branch, "master"

56voto

Ariejan Points 6567

C'est facile :

set :scm, :none
set :repository, "."
set :deploy_via, :copy

Il suffit de lancer Capistrano à partir de la racine de votre projet.

8voto

Maximus Points 46

En deploy_via, :copy a été abandonné dans la version 3.

https://github.com/capistrano/capistrano/issues/695

Dans la plupart des cas, vous devriez avoir votre code dans un dépôt en ligne comme github ou bitbucket, et il vous suffit alors de définir cette ligne dans votre fichier deploy.rb :

set :repo_url, 'git@bitbucket.org:my_account/my_project.git'

Cependant, si vous disposez d'un référentiel sur le serveur distant sur lequel vous effectuez le déploiement, vous pouvez modifier cette ligne dans votre fichier deploy.rb de la manière suivante :

set :repo_url, 'file:///home/deploy/bare_repo/my_project.git'

Gardez à l'esprit que les trois barres obliques sont importantes, car l'adresse de l'utilisateur est la suivante file:// indique à capistrano que vous recherchez un fichier, et le slash précédent est nécessaire pour pointer vers un chemin Root qui serait quelque chose comme /home/deploy/bare_repo/my_project.git .

7voto

HungYuHei Points 1716
set :repository, 'file:///path/to/your/git_repository'
set :local_repository, "file://."
set :scm, :git
# set :deploy_via, :copy # you must comment it

5voto

movingahead Points 1261

J'ai utilisé une combinaison des réponses de @Ariejan et @HungYuHei qui a fonctionné pour moi.

set :deploy_via, :copy
set :use_sudo, false    
set :scm, "git"
set :repository, "."
set :local_repository, "."
set :branch, "master"

Si vous utilisez la copie locale (et que vous n'avez pas le projet sur Github), il est également judicieux de désactiver l'option :check_revision dans votre deploy.rb qui vérifie si la version distante est synchronisée avec le git local.

0voto

Viktor Trón Points 4119

Normalement le déploiement par copie est super lent. mais copy_cache n'est disponible que si scm n'est PAS none (sync utilise scm) cela signifie que le déploiement à partir d'une copie de travail ne peut être fait qu'avec une copie lente. J'ai réussi à trouver une configuration rapide pour le déploiement par copie à partir du repo local qui est rapide. Vous avez toujours besoin de commiter localement les changements mais vous n'avez pas besoin de les pousser.

set :scm, "git"
set :local_repository, "file://."
set :deploy_via, :copy
# cache only seems to work if use scm
set :copy_cache, true
set :copy_via, :scp
set :copy_exclude, [".zeus*", ".bundle", ".git", "tmp/*", "doc", "log/*", "fixtures/*"]

Malheureusement, il se casse parfois mystérieusement avec :

fatal: Could not parse object 'c438b9d1242cb311be43d681e3f89bc486d748ed'.`

Idéalement, la synchronisation de la mémoire cache locale devrait être mise en œuvre même si aucun scm n'est utilisé pour le déploiement de la copie de travail vers le travail. une grande fonctionnalité à ajouter à capistrano

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X