6
6

More than 5 years have passed since last update.

既存の公開鍵を消してしいまわない Travis CI と Heroku の連携方法

Last updated at Posted at 2013-06-11

皆さん Travis CI 使ってますか?私は最近使い始めてその簡単さに驚きおののき,なんでもっと早く使ってなかったんだと激しく後悔しております.

テストの自動化が出来るならデプロイも自動化出来る?いやしかしこれはテスト特化のサービスなんじゃ…

そう思ってたのですがどうもデプロイ自動化も出来るらしいんですね.それで昨日早速試してみたら何と当たり前のように出来てしまいました.

Heroku の API Key を隠すこともきちんと出来るので安心っぽいです.

さてその方法に関しては,以下の記事が大変分かりやすいです.自動デプロイそのもののやり方に関しては今回うちでは解説しませんので,こちらを参考にして下さい.

今回うちで改めて解説するのはタイトルにもある通りのことです.

先程の記事をそのまま参考にして自動デプロイを行おうとすると,

heroku keys:clear

というコマンドによって,普段自分が使っている (使っていた) 公開鍵が根こそぎ削除されてしまいます.これはつらぽよです.

なので上記のコマンドは削除して,追加された公開鍵だけを Heroku への push 後に削除すればいいと言えます.

それを行うための変更が以下の通りとなります.

.travis.yml
  ...
  after_success:
  - wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
  - git remote add heroku git@heroku.com:HEROKU_APP_NAME.git
  - echo "Host heroku.com" >> ~/.ssh/config
  - echo "   StrictHostKeyChecking no" >> ~/.ssh/config
  - echo "   CheckHostIP no" >> ~/.ssh/config
  - echo "   UserKnownHostsFile=/dev/null" >> ~/.ssh/config
- - heroku keys:clear
  - yes | heroku keys:add
  - yes | git push heroku master
+ - heroku keys:remove $(cat ~/.ssh/id_rsa.pub | awk '{print $3}')
  env:
    global:
    - secure: |-
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

cat ~/.ssh/id_rsa.pub で今回使った公開鍵を表示して,鍵の指定に必要な部分を awk で切り取って表示して,表示したもの heroku keys:remove の引数として使ってやる,という流れです.

なんでこんなことしないといけないかというと使われる公開鍵がビルドごとに毎回変わるんですよ Travis CI って.なので heroku keys:clear を取り除いただけではどんどん Travis CI の新しい公開鍵が追加されて行ってしまいます.それはそれでつらぽよです.

個人的に,なんでこれがデフォルトじゃないのかが不思議です… (なんでデフォルトで `heroku keys:clear` なんてされてしまうのか…)

すみません travis のデフォルトで heroku keys:clear されるんじゃなかったです.after_success で実行されるコマンドが自動生成されたと勝手に勘違いしていた自分が謎 (いや理由は分かってるんですが釈明するほどのことじゃない).

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6