Gitリポジトリからcapistrano経由で簡単にデプロイできます。最初はGitHubからフォームを展開していましたが、すべてうまくいきました。しかし、その後、リポジトリをBitBucketに移動しました。
fatal: Could not parse object '9cfb...'.
変更すると問題は消えます
set :deploy_via, :remote_cache
に
set :deploy_via, :copy
しかし、それは問題を解決せず、それをバイパスするだけです。古いキャッシュを削除するようにカピストラーノに伝える方法はありますか?
私はこれをテストすることができなかったので、よくわからないと言わなければなりませんが、これはうまくいくはずです:
cap deploy:cleanup -s keep_releases=0
サーバーからのすべてのリリース(キャッシュ)を消去するため。
どうやら、shared/cached-copy
も削除する必要があります。これは、以下のコメントによると、上記のCapistrano呼び出しではクリーンアップされないようだからです。
Capistrano 2.X
新しいアドレスを使用してレポジトリを削除して再クローンします。
cd $deploy_to/shared
rm -rf cached-copy
git clone ssh://[email protected]/new/repo.git cached-copy
config/deploy.rb
を変更して、新しいリポジトリを使用します。
set :repository, "ssh://[email protected]/new/repo.git"
set :scm, :git
set :deploy_via, :remote_cache
再度展開します。
cap deploy
Capistrano 3.X
$deploy_to/repo
ディレクトリを削除しますconfig/deploy.rb
を変更します(2.Xと同じ)cap deploy
Capistrano 2以下
サーバーにSSHで接続し、展開フォルダーの./shared/cached-copy/.git/config
のリポジトリを更新するか、単に./shared/cached-copy
を削除します
Capistrano 3以降
サーバーにSSHで接続し、展開フォルダーの./repo/config
のリポジトリを更新します。
deploy.rb
で次のようにしてこれを解決しました。
namespace :deploy do
task :cope_with_git_repo_relocation do
run "if [ -d #{shared_path}/cached-copy ]; then cd #{shared_path}/cached-copy && git remote set-url Origin #{repository}; else true; fi"
end
end
before "deploy:update_code", "deploy:cope_with_git_repo_relocation"
デプロイが少し遅くなるので、すべてのデプロイターゲットが追いついたと感じたら削除する価値があります。
Git Originを/ shared/cached-copyフォルダーで変更する必要があります
cd /var/www/your-project/production/shared/cached-copy
git remote remove Origin
git remote add Origin [email protected]:/Origin.git
try cap production deploy
これが この答え について語るCapistrano 3バージョンです。各サーバーで答えが示唆することを行うのは退屈かもしれません。
これをdeploy.rb
にドロップしてからcap <environment> deploy:fix_repo_Origin
を実行します
namespace :deploy do
desc 'Fix repo Origin, for use when changing git repo URLs'
task :fix_repo_Origin do
on roles(:web) do
within repo_path do
execute(:git, "remote set-url Origin #{repo_url}")
end
end
end
end
お使いのバージョンに依存しますCapistrano 3は以前の祖先とは異なります:
ここで私の元の答えと同様の問題を修正する方法を読んでください git を使用してリポジトリを変更するときのCapistranoエラー
最も簡単な方法は、Webサーバーのshared/cached-copyディレクトリにある.git/configのリポジトリURLを新しいものに変更することです。その後、通常どおりに通常のデプロイを実行できます。
多くのレポを実行する必要がある場合は、タスクを追加することをお勧めします。
Capistrano 3の場合、このタスクをdeploy.rbに追加します
desc "remove remote git cache repository"
task :remove_git_cache_repo do
on roles(:all) do
execute "cd #{fetch(:deploy_to)} && rm -Rf repo"
end
end
次に、すべてのステージで1回実行します。
cap testing remove_git_cache_repo