2011-11-23 15 views
11

cap deployを実行すると、Capistranoは$HOME/sites/MY_APP/releases/TIMESTAMPのようなフォルダを作成しようとします。実行しようとしているコマンドがわかりますが、実際にはフォルダーを作成しません。Capistranoはリリースを作成しません

私はCapistranoの出力から直接コマンドをコピーし、SSHでコマンドを実行することができます。問題なく使えます。

コマンドはそうなります:

cp -RPp /home/some_user/sites/my_cool_app/shared/cached-copy /home/some_user/sites/my_cool_app/releases/20111123164239 && (echo 59bf115868c2430cd0475ca1596998f1cfa3c084 > /home/some_user/sites/my_cool_app/releases/20111123164239/REVISION) 

はなぜコマンドはカピストラーノて失敗しますが、SSH端子を介して成功するでしょうか?私にとって

set :deploy_via, :remote_cache 

解決物事:問題からまたがるが、行を削除するところ

+0

何か他のエラーが発生した場合、カピストラロールバックを実行します。 capistranoの出力を投稿することができますし、その上にいる間、cap配備の出力:チェック? – HectorMalot

+0

キャップ '' deploy:check'から 'あなたは必要な依存関係がすべてインストールされているようです ' – RyanScottLewis

+0

多くのことが起こる可能性があります:サーバにログインするために使用しているユーザがフォルダを書き込み可能にしていますか?デプロイメントスクリプトで何か他に失敗していますか? – HectorMalot

答えて

22

は、私はまだわかりません。リリースディレクトリが作成されていないバグのように見え、その行を削除するとそのステップをスキップします。あなたがremote_cacheを維持したい場合は、より良いアプローチは、そうのようなセットアップに別のステップを追加することはおそらくです:

after "deploy:setup", "deploy:create_release_dir" 
namespace :deploy do 
    task :create_release_dir, :except => {:no_release => true} do 
    run "mkdir -p #{fetch :releases_path}" 
    end 
end 
+0

'set:deploy_via、:remote_cache'は助けになりませんでした。私はちょうどdir 'を実行しました "mkdir -p#{fetch:releases_path}" – poorva

0

は緑lineline以下の部分を無視し、私はちょうど他の人のための参考のために、それらを維持します。

私がCapistrano 3.9.xバージョンを使用していたときに、上記の問題が発生していました。私がバージョン3.4.0にダウングレードしたとき、それはすべて動作していました。答えの


第二部分:

これは私に起こったら、githubのキーが~/.ssh/に設定されていなかったときでした。

サーバー上にsshキーを生成する必要があります。 .pubファイルが~/.sshに生成されたら、github.com(またはその他のサービス)にアクセスし、新しく生成されたsshキーをWebサイトに追加する必要があります(設定ページなどにあります)。

set :repo_url, proc { "[email protected]:your_git_name/#{fetch(:application)}.git" } 

のでconfigファイルは次のようになります: はまた、サーバー上のカピストラーノデプロイスクリプトで識別に一致する~/.ssh/configファイル内の適切なレコードを追加私の場合は

Host github.com 
    HostName github.com 
    User git 
     IdentityFile ~/.ssh/id_rsa_my_new_key_on_the_server 
0

それこの行をdeploy.rbファイルに追加することでした。

set :scm, :git