2016-06-01 4 views
0

Beim Versuch, eine Rails App auf einem Produktionsserver mit Capistrano zu implementieren, scheint es mein Projekt nicht als Git Repo zu erkennen, obwohl ich das Projekt direkt von GitHub geklont habe.Capistrano und Git Deploy Rails App

GIT LOG:

$ git status 
On branch master 
Your branch is up-to-date with 'origin/master'. 
nothing to commit, working directory clean 

CAP LOG:

$ cap production deploy 

    triggering load callbacks 
    * 2016-06-01 16:30:26 executing `production' 
    triggering start callbacks for `deploy' 
    * 2016-06-01 16:30:26 executing `multistage:ensure' 
    * 2016-06-01 16:30:26 executing `deploy' 
    * 2016-06-01 16:30:26 executing `deploy:update' 
** transaction: start 
    * 2016-06-01 16:30:26 executing `deploy:update_code' 
    executing locally: "git ls-remote [email protected]:mitigation/mpm.git r1" 
    command finished in 662ms 
    * refreshing local cache to revision 8c86d067abde1464f88902566324a99e22cd3147 at /var/folders/xs/5qz1glwj30v51rwpxhyclw880000gn/T/mpm 
    executing locally: cd /var/folders/xs/5qz1glwj30v51rwpxhyclw880000gn/T/mpm && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 8c86d067abde1464f88902566324a99e22cd3147 && git clean -q -d -x -f 

fatal: Not a git repository (or any of the parent directories): .git 

command finished in 13ms 
shell command failed with return code pid 52560 exit 128 

Hier ist meine Capfile:

load 'deploy' 
load 'deploy/assets' 
load 'config/deploy' 

Hier ist mein deploy.rb:

require 'soprano' 

require 'bundler/capistrano' 

require 'capistrano/ext/multistage' 

require 'whenever/capistrano' 

require 'leipreachan/capistrano2' 

set :default_environment, { 
    'PATH' => '/home/deploy/.rbenv/shims:/home/deploy/.rbenv/bin:$PATH' 
} 


set :web_server, :nginx 
set :keep_releases, 3 

set :repository, '[email protected]:mitigation/mpm.git' 

set :deploy_via, :copy 
set :copy_exclude, %w(.git .idea .yardoc tmp log .DS_Store doc/* public/uploads.tar db/*.sql vendor/cache) 
set :copy_cache, true 

set :bundle_without, [:development, :test] 
set :bundle_flags, '--deployment --binstubs' 

set :user, 'deploy' 

before 'deploy:setup', :db 
after 'deploy:create_symlink', 'utils:version' 
after 'deploy:update_code', 'db:symlink' 

#For troubleshooting only 
namespace :deploy do 
    task :update_code, :except => { :no_release => true } do 
    #on_rollback { run "rm -rf #{release_path}; true" } 
    strategy.deploy! 
    finalize_update 
    end 
end 
+0

Ich wette, es ist das Ausschließen von .git auf Ihrem copy_exclude. Es wird vielleicht in ein temporäres Verzeichnis kopiert, aber nicht in .git und das lässt es nicht mehr als Repo übrig. – Kevin

+0

Könnten Sie ein wenig mehr ausarbeiten? Ich habe versucht, .git aus dem copy_exclude zu entfernen, aber es wird immer noch derselbe Fehler ausgegeben. Wie würde ich das beheben? –

Antwort

0

Während der Bereitstellung in verschiedenen Umgebungen erstellt capistrano3 einen Verzeichnisbaum und speichert die Git-Informationen in einem Ordner namens repo_path. Sie müssten innerhalb dieses Verzeichnisses auf Ihrem Produktionsserver reisen und "$ git log" würde funktionieren. Dies ist ein .git repo

Sie sollten auch nicht .git in Ihrem copy_exclude benötigen.

Versuchen Sie, durch die capistrano3 Einrichtung Prozess immer wieder mit Ihrer App für verschiedene Umgebungen.