web-dev-qa-db-ja.com

リポジトリのURLを変更した後、Capistranoのデプロイが失敗する

Gitリポジトリからcapistrano経由で簡単にデプロイできます。最初はGitHubからフォームを展開していましたが、すべてうまくいきました。しかし、その後、リポジトリをBitBucketに移動しました。

fatal: Could not parse object '9cfb...'.

変更すると問題は消えます

set :deploy_via, :remote_cache

set :deploy_via, :copy

しかし、それは問題を解決せず、それをバイパスするだけです。古いキャッシュを削除するようにカピストラーノに伝える方法はありますか?

74
Jakub Arnold

私はこれをテストすることができなかったので、よくわからないと言わなければなりませんが、これはうまくいくはずです:

cap deploy:cleanup -s keep_releases=0

サーバーからのすべてのリリース(キャッシュ)を消去するため。

どうやら、shared/cached-copyも削除する必要があります。これは、以下のコメントによると、上記のCapistrano呼び出しではクリーンアップされないようだからです。

45
robustus

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

  1. $deploy_to/repoディレクトリを削除します
  2. config/deploy.rbを変更します(2.Xと同じ)
  3. cap deploy
105
Justin Tanner

Capistrano 2以下

サーバーにSSHで接続し、展開フォルダーの./shared/cached-copy/.git/configのリポジトリを更新するか、単に./shared/cached-copyを削除します

Capistrano 3以降

サーバーにSSHで接続し、展開フォルダーの./repo/configのリポジトリを更新します。

チェック リポジトリ変更後のCapistrano 3デプロイメントの修正

14

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"

デプロイが少し遅くなるので、すべてのデプロイターゲットが追いついたと感じたら削除する価値があります。

6
sheldonh

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

3
comonitos

これが この答え について語る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
0
ErJab

お使いのバージョンに依存しますCapistrano 3は以前の祖先とは異なります:

ここで私の元の答えと同様の問題を修正する方法を読んでください git を使用してリポジトリを変更するときのCapistranoエラー

0
user1553777

最も簡単な方法は、Webサーバーのshared/cached-copyディレクトリにある.git/configのリポジトリURLを新しいものに変更することです。その後、通常どおりに通常のデプロイを実行できます。

0
Sævar

多くのレポを実行する必要がある場合は、タスクを追加することをお勧めします。

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
0
mipmip