Docker イメージをビルドする際、Dockerfile のサイズの大きさによっては、ビルド プロセス中に大量のコマンドが順次実行されることがあります。 こうしたビルドに慣れている方であれば、ビルドにかかる平均時間を見積もることはできます。しかし、Docker ではタイミング情報が出力されないため、ビルド時間が平均を超過した場合、どこで時間がかかったのかを把握することが困難な場合があります。
この問題は、Docker のビルド出力の各行を bash とパイプし、date コマンドを使用して時刻を先頭に配置することで解決できます。
- run: docker build . | while read line ; do echo "$(date +"%T") > $line" ; done ;
これで、以下のような行が出力されるようになります。
21:15:46 > Status: Downloaded newer image for cimg/base:2020.1121:15:46 > ---> 2b62242a26ae21:15:46 > Step 2/14 : LABEL maintainer "CircleCI <circleci@example.com>"21:15:47 > ---> Running in b829a27594ae21:15:47 > ---> f0d09345055e21:15:47 > Removing intermediate container b829a27594ae
タイミング データ形式を HH:MM:SS で記録すると情報を細かく把握でき、想定よりも時間のかかったステップの追跡に役立ちます。