2018年4月10日火曜日

[CI] Cirrus CI はじめました



新しい CI サービスを見つけたので、早速使ってみました。
今回使ったのは Cirrus CI です。
Cirrus CI の特徴は Github App であること、そしてシンプルかつ Windows にも対応しています(OS X も今後対応するようです)
また、気になる Pricing も OSS であれば無料です。


はじめる
Cirrus CI は他の CI サービスと異なり Github App で提供されているため Github 専用です。
使う場合も、Marketplace からインストールして開始します。
https://github.com/apps/cirrus-ci

Marketplace にアクセスしたら、「Install」ボタンを押します。


権限の確認画面が出ますので、自分のリポジトリ全部に権限を与えるか、一部のリポジトリのみに与えるか選択します。使い方にあったほうを選択したら、「Install」ボタンを押してください。


インストールはこれだけです。
完了すると「Quick Start」のページにジャンプします。
(ドキュメントは他のサービスと比べると少ない印象がありますが、シンプルな作りだったので十分でしたし、yml フォーマットも理解しやすかったです)


タスクを作成
Cirrus CI も多くの CI サービスと同様に yml ファイルをリポジトリに配置して、その記述に沿って CI が実行されます。
yml のフォーマットは公式ドキュメントに説明があります。

iutest では以下のようなタスクを作成しました。(コメント足してます)
# コンテナの指定はタスクごとに指定可能、グローバルデフォルトは以下のように書く
#container:
# 指定できる imgae はこちらを参照 (https://cirrus-ci.org/guide/supported-computing-services/#community-cluster)
# k8s を覚えたら追記
# image: node:latest
# cpu: 4
# memory: 12
# task(他の CI サービスでいうとジョブとか)
# task の前に好きな名前をつけられる、コミットステータスに表示される名称がこれになる
cirrus_gcc_test_task:
# コンテナ指定
container:
image: gcc:latest
# マトリックスも組める
# (コンテナのマトリックスも組める https://cirrus-ci.org/guide/writing-tasks/#matrix-modification)
env:
matrix:
STDFLAG: -std=c++14
STDFLAG: -std=c++17
#STDFLAG: -std=c++2a
# ***script に実行する処理を書く (https://cirrus-ci.org/guide/writing-tasks/#script-instruction)
# script の前には好きな名前をつけられる
test_script: cd test && make -j4 showcxxversion default && make test
#cirrus_use_gtest_task:
# env:
# USE_GTEST: 1
# container:
# image: srzzumix/googletest:latest
# test_script: cd test && make -j4 showcxxversion default && make test
view raw .cirrus.yml hosted with ❤ by GitHub


フォーマットはシンプルで、基本的には task と script を作成する感じです。
もちろん、マトリックスや、タスクの依存関係などを組みこともでき、メインの CI サービスとして使っていける機能が揃っています。

.cirrus.yml を push する
作成した .cirrus.yml を push するとタスクが実行されます。
タスクの状態は Github の Commit Status に表示されます。



Details から詳細ページにジャンプできます。
そちらでビルドログが確認できますので、失敗した場合はそちらを確認する感じ。




バッジを付ける
最後に、CI サービスお約束のバッジを付けていきます。
バッジの付け方は以下のページに説明があります。
https://cirrus-ci.org/guide/writing-tasks/#embedded-badges


iutest の場合は
のようになります。



最後に
たまたま Cirrus CI のことを発見して使ってみましたが、躓くところもなくすんなりと導入ができました。
今まで多くの CI サービスを使ってきたこともあってか、yml ファイルの記述が理解しやすかったように感じました。

また、今回は使用しませんでしたが Windows のワーカーも使えるとのことですし、OS X も今後対応予定なので複数 OS のテストが1つのサービスでできるようになる日も近そうです。
Travis CI や Circle CI で Linux/OS X、AppVeyor で WIndows の CI を回している方は、お引越しを検討してみてはいかがでしょうか。

今回は以上です。では。

0 件のコメント:

コメントを投稿