ざっくりん雑記

プログラミングで忘れそうなことをひたすらメモる

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.ymldeployセクションの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について知っておけば、ハマらなかったなと…。

f:id:azuuun:20171206184156p:plain

参考

github.com