やむのこばなし

ひっそりと続けてる人を重んじるエンジニアのブログ

CicleCIのクレジットを無駄遣いしてしまった話

CircleCIでは実行時間に対してクレジットを使う

戒めポイント1 無闇にSSHしない

実行時間に対してクレジットを消費してしまうため、無闇にSSHなどしてしまうとキャンセルするまでは実行時間カウントされてしまうのでよほどじゃない限りやってはいけない。

3年の運用で編み出した CircleCI 超設計大全

有識者的にはSSH Debugで動く方法確率させてからymlに落とし込むほうがいいらしい。なるほどなぁ。

戒めポイント2 最低限記法などは確認してから実行する

記法等で無駄にビルドが走ってしまうのはとっても勿体ないので、最低限の記法などは確認してから実行するほうが良いです。

Homebrewでcircleciのcommand line toolsをインストールすればlocalで実行確認ができます。

brew install circleci
circleci config validate 

公式 DOCS

基本的にCI上で確認を行なう作業はCI環境依存の問題だけにとどめたい

戒めポイント3 規模が大きくなるまではリソースを抑える

たとえば、大きな resource_class (CPU 4基、 メモリ 8 GB) を使用して 1 分あたりのクレジット数を増やし、大規模なプロジェクトのビルドを高速化することができます。一方、小規模なプロジェクトでコードのリリース頻度が低い場合や、ビルド時間を重視しない場合は、小さな resource_class (CPU 1基、 メモリ 2 GB) を使用できます。

config.ymlresource_class: smallを指定すると1分あたりのクレジットが減る(その代わり遅いけど) largeは並列化とか使わない限り必要なさそう?

SSHするときはsmall, 並列でバリバリ動かしたいときはlargerでもいいのかな、という見解も最近は出てきました。

番外編 M1Macでもローカルで動かしたい

M1 Macでは現状 Docker executorは対応していないらしい :cry:

https://support.circleci.com/hc/en-us/articles/360056461452-Apple-M1-Apple-Silion-Support-on-CircleCI

https://circleci.com/product-roadmap/

余談

1000クレジットくらい無駄遣いしてしまった。