もちゅろぐ

iOSやSwift、モバイル設計だったりRailsについてまとめていく

CircleCIでSSH Key登録が失敗する場合の原因特定方法と自分が見つけた解決方法

最近CircleCIを使って定期実行的なことをするために弄り始めました。

CircleCIの簡単な説明

CircleCIはGitHubのレポジトリベースで管理されており、セットアップすると自動でread-onlyの鍵がGitHubの対象レポジトリに登録されてます。 これによりCircleCIがGitHubのレポジトリをgit pullして取得したコードのテストを実行できるようになります。

自分が試したかったのは少し違う

自分がやりたかったのはgit pull後にテストではなくバッヂスクリプトを走らせた後に 成果物を再度対象レポジトリにgit push することでした。

自動で登録される read-only な鍵では足りないので新たに鍵を追加する必要があります。 そのさいに何故か秘密鍵が登録できず失敗になって躓いたのでその時に調べたことを紹介しようと思います。

SSH Key 追加画面 f:id:motom552:20181126162504p:plain

エラーはブラウザコンソールに出る

f:id:motom552:20181126163343p:plain

エラーになると失敗しか表示されず一見まったく原因が分からないですが、 ここでエラーになったらブラウザコンソールでエラーログに失敗要因が表示されてます。 Chromeであればoption+command+iで呼び出せます。

自分が躓いたのはエラーログでは分からず

しかし自分が躓いたのはエラーログが単純に400が変えるだけで詳しい原因が分からなかったのですが、 次の方法で解決できました。

SSH Keyを登録する時に

$ ssh-keygen -t rsa -b 4096 -C "メールアドレスなど"

のようなコマンドだと思いますが、これに -m PEM をつけて強制的にPEM形式にすることで無事登録できました。

$ ssh-keygen -m PEM -t rsa -b 4096 -C "メールアドレスなど"

参考

discuss.circleci.com discuss.circleci.com