[CircleCI]CICD運用中に遭遇したトラブル及び調整した事

CircleCI Workflowを用いた本番運用にて、遭遇したトラブルや調整した事をまとめました。
2019.11.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

CircleCI Workflowを利用したCICDが無事回るようになりました。未だ幾つか問題点はあるものの、

  • CircleCIのみでの解消
  • 別のサービスを併用しての解消

の2点で検証を引き続き行っています。

本運用を開始してから遭遇したトラブルや運用上の課題について、対処してきた内容をまとめてみました。

処理時間超過によるタイムアウト

本番環境へのDeployについては開発環境よりも更に時間がかかる事は考慮のうちでした。が、一定時間を超えるとタイムアウトで止まるというのは想定外。

サポートページには下記の通り記載があります。

CircleCI には、10 分間でタイムアウトする機能が組み込まれています。 つまり、最後の出力から 10 分が経過すると、ビルドは取り消され、停止します。

ビルドに設定してあるタイムアウトリミットを超えた場合 – CircleCI Japanese Support Center

10分を超える可能性は考えていたものの、検証中にタイムアウトに関して取り扱った記事を見かけなかったためか、特にフォローしていませんでした。

タイムアウトについて、特に通知が行われるわけでもないようです。本番への反映時には、トラブル防止のため掛かる見込み時間を考慮して設定しましょう。

- run:
    command: ./deploy.sh prod
    no_output_timout: 30m

マシンリソースを節約する

環境の更新頻度は低めで、テストも1分弱で完了するため、標準のmedium classでも持て余し気味でした。調べた限りではresource_classの設定を追加することでclassのグレードを変えられるとのことで、より低めのclassを設定してみました。

  test:
    docker:
      - image: circleci/python:3.7.3
    resource_class: small
設定前
設定後

Configuring CircleCI - CircleCI

あとがき

CircleCIは動作環境の設定が手軽で、リソースの節約やボトルネックの解消に集中できることが強みです。当記事にてそれらのうちいくつかをまとめてみました。参考になれば幸いです。