早くなったと噂のCircleCI 2.0を使ってみた!

こんにちは、こがです。

今回とある処理の自動化を兼ねてCircleCIを触ってみました!
最近では2.0がリリースされており、しかも結構早くなっているようで、早速というかいきなりですが2.0を触ってみることにしました!

CircleCIとは

CI(継続的インテグレーション)をクラウド上で行えるWEBサービスです。
色々と使い方はありますが、基本としては新しいコミットをトリガーとしてそのアプリが正しく機能するのかどうかをテストする感じです。
他の使い方としてAndroidやiOSのビルドなんかも出来たりします。

CircleCI 2.0

2.0になって大きく変わった部分は、設定ファイルの書き方(互換性なんてそんなものはないらしい)、Dockerのサポート拡充、実行時間が大幅に短縮などが大きなところでしょうか(あまりよく分かっていない)

設定ファイルは本当に大きく書き方が変わっていて、何も知らなかった自分はここで結構時間を使いました・・・。
特に、設定ファイルの置き場所が.circleci/config.ymlに変更になっていてしばらくなんで動かないんだろうと頭を悩ませていました。

Dockerのサポート周りでは、以前のバージョンでは利用するコンテナが固定だったようです。
2.0からは公開されているコンテナイメージから自由に選択することが出来るようになりました。これによって、公開しているのが前提ですが自前のコンテナも利用可能になります。

Schedule-Workflow

新機能の一つにWorkflowという仕組みが導入されています。Workflowを使うことで、今まで乱雑になっていた設定を目的ごとに整頓したり、作業プロセスに依存関係を付けたり出来るようになります。
と、まあWorkflow自体はこの辺にしておいて今回はSchedule-Workflowにフォーカスして行こうと思います。

簡単に言えば今までコミットベースのCIだったのをその名の通りスケジューリングして出来るようにしましょうという感じです。
スケジューリングの指定はcrontab形式で行います。

今までCircle CIのAPIとAWS Lambdaを組み合わせたりしていた方も居ると思いますが、それが公式の機能で出来るようになります。

ハマり所

一つは先にも挙げましたが、設定ファイルの置き場所が変更になっていることです。
これを知らずに以前のファイルを2.0用に書き換えてて動かない!なんてことも・・・。

二つ目はymlのインデントが特殊?なのか自分の環境では上手く動きませんでした。
普段2スペースでインデントしているのですが、他の部分は認識するのにrestore_cache/save_cacheやworkflow内で使うscheduleのパラメータ部分では上手く認識しませんでした。この部分だけ4スペースにすることで動いています。
きっと同じような構文の部分共通で発生しているはず・・・。

終わりに

ざっと軽くではありますが、触った機能に関して書いてみました。
これから色々とまた使っていく内にネタに出来たらなと思います。

今日はこの辺で。ではでは