A Little Each Day

note to self

GitHubやBitbucketのユーザー名を変更してcapistranoでデプロイしたらエラーがでた

こんにちは。本日はcapistranoで発生したエラーについてです。

すでに既存のプロジェクトをGitで管理していて、GitHubやBitbucketなどのサービスでユーザー名を変更してからcapistranoでデプロイしたらエラーが発生しました。

自分がcapistranoに疎いということもありすこし手間取りました。。

GitHubやbitbucketのユーザー名を変更した

GitHubとBitbucketを使っているけど、ユーザー名を初回登録の際に適当につけてしまったので、先日ふとGitHubとBitbucketのユーザー名をせっかくの機会だから変えたいなと思い、2つとも変更しました。


よかったらぜひフォローしてね!

github.com

bitbucket.org


capistranoでデプロイ

ユーザー名を変更して今まで通りにデプロイしようとしました。

もともとGitで管理していたプロジェクトをcapistranoでデプロイしたら今まで問題なくできていたのに何故かできなかった。。


理由は簡単で、リモートリポジトリの名前はユーザー名が入るので、ユーザー名を変更するとリポジトリのURL自体が変わるので当たり前。。(あまりにも盲点すぎてしばらく気付かなかった)

もしGitHubやBitbucket等で既存のリポジトリを管理しつつユーザー名を変更したらcapistranoで諸々直さなければならない箇所が出てきます。


デプロイ対象のリモートリポジトリURLを変更

まずcapistranoで変更しなくてはならない箇所はデプロイするリポジトリ名です。

# config/deploy.rb

set :repo_url, 'ここに新しいリモートリポジトリ名'


これで新しいリポジトリを指定したのでOKなはず。いざデプロイ。

$ bundle exec cap production deploy


あれれ。。なにやらエラーが出ますね。。

git:update
      01 git remote update --prune
      01 Fetching origin
      01 repository does not exist.
      01 fatal: The remote end hung up unexpectedly
      01 error: Could not fetch origin
      ・
      ・
      ・


これはcapistranoがgitアップデートするときに既存のリポジトリをみるためです。

でも先程も説明した通りユーザー名を変えるとリポジトリ名が変更するのでcapistranoに既存のリポジトリが見当たらないよ!と怒られてしまいます。


サーバー側のレポジトリも変更する

上記のエラーを解決するにはサーバーにログインして、capistranoでデプロイするディレクトリ(deploy.rbのset :deploy_toの部分)に移動してから新しいレポジトリをセットし直します。

$ cd デプロイするディレクトリ(set :deploy_to, 'ここに書いてあるディレクトリに移動')

$ git remote set-url origin 新しいリモートリポジトリのURL


これでもう一度

$ bundle exec cap production deploy


すれば、問題なく新しいリモートリポジトリURLでもデプロイできるはずです。



本日は以上です。