はじめに
ローカルではパスするテストがCircleCiではパスしない、ということがあったので、CircleCiのコンテナにsshでつないでデバッグをしました。
おおむね、公式通りなのですが、補足も必要なところもあるかと思うので、その時の手順を残しておきます。
windows環境ですので悪しからず。
前提
- sshは使用できず状態になっている前提です。
- まだの場合はこちらなどを参考に入れてみてください。
- githubとCircleCiもアカウントは持っている前提です。
準備
CircleCiにsshで接続するには、githubにsshで接続できる状態になっている必要があります。
こちらを参考に設定をすると良いかと思います。
デバッグ対象のコンテナをsshを有効にして再起動
CircleCiにアクセスし、デバッグしたいJobの"Rerun Job With SSH"を選択する。
WorkFlowではなくJobを選択する必要があります。
以下のようにEnable SSHのステップが追加されてワークフローが開始されます。
以下の白枠の箇所にポート番号とホストのipアドレスが表示されますのでこれを使ってsshでコンテナに接続していきます。
sshでコンテナに接続
先ほど表示された情報をもとにsshでコンテナに接続します。
途中で接続するか聞かれたらyesと答えておけば良いです。
ssh -p <port> <ip address>
これでコンテナに接続した状態になるはずなので、いろいろデバッグに必要な情報が取れると思います。
また、ローカルに戻った状態で以下のようなscpを使ったりしてコンテナのファイルやディレクトリをダウンロードしたりもできます。
scp -r -P <port> root@<ip address>:<コピーしたいディレクトリのパス> <ローカルのダウウンロード先のパス>
終わりに
Dockerを使ってても、ちょこちょこローカルとCircleCiでの結果が異なることがあり、その際にデバッグしたりしています。そもそもデバッグがいらなくなるようDockerやOSについても学んでいきたいなーと思います。