Quelles modifications dois-je apporter au fichier deploy.rb
ci-dessous pour lui permettre de déployer mon application à partir d'un dépôt Git local? Si je ne peux pas déployer depuis un dépôt local, puis-je demander à capistrano d'utiliser 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"
C'est facile:
set :scm, :none
set :repository, "."
set :deploy_via, :copy
Exécutez simplement Capistrano à la racine de votre projet.
Le deploy_via, :copy
a été supprimé dans la version 3.
https://github.com/capistrano/capistrano/issues/695
Dans la plupart des cas, vous devriez avoir votre code dans un référentiel en ligne tel que github ou bitbucket, puis il vous suffit de définir cette ligne dans votre fichier deploy.rb:
set :repo_url, '[email protected]:my_account/my_project.git'
Toutefois, si vous déployez également un référentiel sur le serveur distant, vous devez 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 le file://
indique à capistrano que vous recherchez un fichier et que la barre précédente est nécessaire pour indiquer un chemin racine qui serait quelque chose comme /home/deploy/bare_repo/my_project.git
.
set :repository, 'file:///path/to/your/git_repository'
set :local_repository, "file://."
set :scm, :git
# set :deploy_via, :copy # you must comment it
J'ai utilisé une combinaison de réponses @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 une copie locale (et n'avez pas le projet sur Github), il est également sage de désactiver la tâche :check_revision
dans votre deploy.rb, qui vérifie si remote est synchronisé avec git local.
La solution Capistrano 3 qui fonctionne pour moi:
before :deploy, :deploy_from_local_repo
task :deploy_from_local_repo do
set :repo_url, "file:///tmp/.git"
run_locally do
execute "tar -zcvf /tmp/repo.tgz .git"
end
on roles(:all) do
upload! '/tmp/repo.tgz', '/tmp/repo.tgz'
execute 'tar -zxvf /tmp/repo.tgz -C /tmp'
end
end
Avant de déployer, vous chargez un fichier tar.gz sur le serveur, décompressez et enfin réinitialisez: repo_url en mode fichier.
Prenez soin de supprimer le rapport précédent:
task :remove_repo do
on roles(:all) do
execute "rm -r #{repo_path}"
end
end
normalement, le déploiement via copie est très lent . mais copy_cache n'est disponible que si scm n'est PAS aucun (la synchronisation utilise scm) Cela signifie que le déploiement à partir d'une copie de travail ne peut être effectué qu'avec une copie lente ..__ une configuration rapide pour le déploiement de copie à partir d'un référentiel local qui est rapide . Vous devez néanmoins valider localement les modifications, 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 rompt parfois mystérieusement avec:
fatal: Could not parse object 'c438b9d1242cb311be43d681e3f89bc486d748ed'.`
Idéalement, la synchronisation du cache local 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. grande fonctionnalité à ajouter à capistrano