2020年5月18日月曜日

[CodeShip] Basic から Pro に移行してみたけど Basic に戻ってきた話

iutest の CI 環境アップデート報告その3です。
その1,2はこちら

今回は CodeShip の環境をアップデートしました。
CodeShip Basic と Pro とは
まずはじめに CodeShip について簡単に紹介します。

CodeShip は CloudBees が提供している CI as a Service です。
Basic はシンプルな機能で GUI Config なサービスです。
Pro は docker-compose のようにサービスコンテナを起動して CI ができるサービスです。

Pro の方が高機能で柔軟ですが、始めるには少し手間がかかります。
Basic はサービスが提供する環境でコマンドを実行する感じなので、すぐに始められます。

Basic と Pro はいつでもプロジェクト単位で移行可能です。
なので、とりあえず始めたい方には Basic がおすすめです。
Pro に移行してみた理由
iutest ではもともと Basic を使っていました。
ビルドや単体テストの実行などは行っておらず、 cpplint などのコーディングルールのチェックや OSDN の svn リポジトリへの同期、GitHub Pages のドキュメント更新を行っていました。
これらのことをする上で Pro の機能は必要なく Basic で十分でしたが、
ブログズミ: chrome://tracing で並列処理の可視化をしてみたらすごく便利だった話」で各 CI サービスの並列化能力を調べたところ、CodeShip Pro では Parallel Steps で多数の並列化(計測した限りでは 50 以上)可能だったため、Pro を使うことにしました。


Pro に移行
Basic から Pro に移行するにあたって必要なのは、YAML config の用意とプロジェクトのタイプ変更です。
YAML を用意する
まずは YAML ファイルを用意しましょう。
下記が iutest の YAML です。


CodeShip Pro で必要な YAML ファイルは2つあります。
services は docker-compose.yml みたいなものです。既存のイメージを pull するか Dockerfile からビルドできます。
steps に Basic で書いていたコマンドを書きます。
Pro の旨味を得るために、 Paralle Steps で並列に実行されるようにしています。

注意が必要なのは、Basic での環境では様々なツールがプリインストールされた環境だったので特にセットアップせずにツールが使えることが多かったですが、 Pro では docker image を使うので必要なツールや環境は自分で整える必要があります。

タイプ変更
YAML が準備できたらプロジェクトを Pro に変更します。
「Project Settings」の「General」にある「Change Project Type」で「Switch to CodeShip Pro」ボタンを押すだけです。

結果

Docker image のキャッシュが効いてる状態で多少速くなったかなーという結果でした。
やってることが軽量なのでこんなもんでしょう。ビルドやテストしてたら並列化の効果は高いと思います。
Basic に戻った理由
つづいて、Pro から Basic に戻った理由です。
Pro の並列化のメリットが iutest での使用例ではあまりなかったという理由もありますが、
一番の理由は「 OSDN の svn リポジトリへの同期処理で、SSH Key の設定を Pro でするのがめんどくさかったから」です。
Basic にはデフォルトで実行環境にプロジェクト固有の SSH Key が設定されており、Public Key をホストサービスに登録するだけで認証通せるので楽なのです。
(ここの設定画面は Pro に移行後も存在するのですが、この鍵は使えないようです。。)

もちろん Pro でも秘密鍵を取り扱う方法はちゃんと用意されています。
ただ、手間に見合うメリットがなかったので戻すことを決めました。
最後に
CodeShip Pro の Parallel Steps は上限がない?(少なくとも 50 並列できた)ので、かなり魅力的です。
CodeShip をメインの CI サービスにする場合は Pro をオススメします。

一方、CodeShip をサブの CI サービスにする場合は Basic で十分といえます。
Basic は並列化はできませんが、(私のように SSH Key の登録とか面倒なことを飛ばして)すぐにサービスを使いたい場合も Basic をオススメします。

Basic と Pro はプロジェクト単位でいつでも移行可能で、Web 上の設定は移行しても残ってたままになっているので気軽に乗り換えができます。
ぜひ一度、どちらも使ってみて使いやすい方を選んでください。

以上。

0 件のコメント:

コメントを投稿