Travis CI - repository not known to https://api.travis-ci.com: [repository_name]
RailsアプリをTravis CIを経由してHerokuへのデプロイするように設定していましたが、ある時、失敗するようになりました。
結論から言うと、「リポジトリ名を変更した際に、gitの環境変数まで更新しなかったため」失敗していました。
バージョン情報
$ heroku -v heroku-cli/6.12.9 (darwin-x64) node-v8.1.4 $ travis -v 1.8.8 $ git --version git version 2.13.3
発生した際の各種ログ
Travis CI - Job log
... Preparing deploy No stash entries found. API request failed. Message: Invalid credentials provided. Reference: failed to deploy
Message: Invalid credentials provided.
というメッセージから、credentials
をheroku cliから更新してあげればよいかと次の操作をしました。
$ travis encrypt $(heroku auth:token) --add deploy.api_key ▸ heroku-cli: update available from 6.12.9 to 6.14.39-addc925 repository not known to https://api.travis-ci.com/: account_name/old_repository_name
account_name/old_repository_name
を参照しようとして、repository not known to https://api.travis-ci.com/
ということで、この古いリポジトリ指定を新しくrenameしたリポジトリに更新してあげれば良いことが分かりました。
解決方法
.git/config
を更新する
対象のリポジトリの.git/config
を開き、[travis]
セクションのslug
キーのリポジトリ名を更新します。
[travis] slug = account_name/old_repository_name
old_repository_name
からnew_repository_name
へ更新してあげます。
[travis] slug = account_name/new_repository_name
travis encrypt
コマンドでcredentials
を更新して、.travis.yml
へ反映する
$ travis encrypt $(heroku auth:token) --add deploy.api_key ▸ heroku-cli: update available from 6.12.9 to 6.14.39-addc925
こうすると、特にエラーが吐き出されないので、gitで差分を見てみると.travis.yml
のdeploy
セクションのsecure
が更新されているのが分かります。
$ git diff HEAD diff --git a/.travis.yml b/.travis.yml --- a/.travis.yml +++ b/.travis.yml @@ -1,35 +1,28 @@ ... deploy: provider: heroku api_key: - secure: KuiegwFqeEcQAh8fZwMKyYIg6WSAe8EOaO74/t8A5Axz+.... + secure: Bcq0iP7rlO7LXyLKTMDSqW2GS+bkjB+FxZYUMtscbXcJ... ...
この状態をpushすると、Message: Invalid credentials provided.
に対する解決が完了し、無事デプロイできます。
結構ハマりましたが、案外シンプルな問題でした。もっとgitについて知っておけば、ハマらなかったなと…。