CD

CI (継続的統合)

[8] 色々な CIWebサービスが提供されています。

[12]CI」が具体的に何を指すかは若干ふわっとしているところがありますが、 多くのサービスが「構築」、「試験」、「deploy」を想定しています。 (これら3ステップが分かれている場合もあれば、そうでない場合もあります。)

[9] 多くは OSS 無料、それ以外有料というビジネスモデルになっているようです。

[10] Linux を提供するところがほとんどですが、それ以外の OS に対応しているところもあります。

[11] Git リポジトリーが基本となっています。普通は GitHub に対応しています。 BitBucket に対応しているところもいくつかあります。

目次

  1. CI 諸サービスの比較
  2. 環境変数 CI
  3. メモ

CI 諸サービスの比較#

[13] 幾つかの CI サービスの機能の比較です。 試してみた時点での、見つけることができた機能の比較なので、 最新の状況ではないかもしれませんし、できないと書いてあってもがんばればできることもあるでしょう。

名前GitHub Actions Travis CI サ終Travis CI .com Circle CI サ終CircleCI 2.0WerckerCodeshipShippableSemaphoreAppVeyorDocker Hub (Automated Build)quay.io (Build)Snap CIMagnum CIGreenhouse CIBitriseBuddyCodePipeline
OSS 無料×無料枠わずか
OSS 無料×××回数制限無料枠わずか
GitHub
BitBucket×
clone 時の submodule update無限再帰 (.travis.yml で無効化可能)なしなしなしなし無限再帰無限再帰無限再帰2段階無限再帰
Linux×
Mac OS X有料××××××
Windows×××××××
複数環境×
docker コマンドLinux のみ× (v2)
build 結果を deploy×
リポジトリー内実行設定××○ (Dockerfile)○ (Dockerfile)
Web サイト上で実行設定
リポジトリー内で秘密値指定
Web サイト上で秘密値指定×
push 時に実行
Web API から実行×
Webサイト上から実行再実行のみ失敗後再実行のみ
実行時間制限あり1時間?30分30分以内
完了後 Web Hooks
Heroku デプロイ
電子メール通知
IRC 通知
安全性 なぜか素のHTTPでもアクセスできる。 HSTS 未指定。ドキュメントが素のHTTP
備考 SSH でログインしてデバッグ可能。 SSH でログインしてデバッグ可能。 実行環境 Docker image 指定可能。リポジトリー追加は手動 (OAuth 未対応)

環境変数 CI#

CIの環境変数

メモ#

[14] UI は基本どのサービスもひどいので、どれがましかという比較になります。 どこも表面的な見た目にこだわって使いやすさを考えていないので、 よく使う機能が中々見つからなかったり、 実行時間が長いと挙動が不審になったり、 ログのサイズが大きくなると動作が不安定になったりします。

[1] Continuous Delivery for free | Codeship ( ( 版)) https://codeship.com/

[2] Continuous Integration · drone.io ( (Brad Rydzewski, Thomas Burke 著, 版)) https://drone.io/

[3] Magnum CI - Hosted Continuous Integration and Continuous Deployment Platform ( ( 版)) https://magnum-ci.com/

[4] Shippable - Continuous Delivery, simplified. ( ( 版)) https://www.shippable.com/

[5] Semaphore: Hosted Continuous Integration & Deployment ( ( 版)) https://semaphoreapp.com/

[6] Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community ( ( 版)) https://travis-ci.org/

[7] 全体的に見て Circle CI がかなり完成度が高い。しかし BitBucket には対応していないのが難点。

継続的インテグレーション

[15] 今選ぶなら CircleCI 一択かなあ。 CircleCIUI が微妙とか突然非互換変更するとか不満はいろいろあるけど (Bitbucket にも今は対応しているよ!)、他はもっとひどいので。

[16] 時間がかかる作業をやりたい → GitHub Actions で試してみる。 (CircleCI はジョブ1時間制限, GitHub Actions はステップで(?)6時間制限)

[17] ディスクの空きが必要な作業をやりたい → CircleCI で試してみる。 何百GBくらいのディスクがある環境で実行される。 (GitHub Actions はストレージが数GB分くらいしかない。)

[18] ログをいっぱい吐く → どこのサービスでも artifacts を使うのが基本。 サイズが多いと動作がおかしくなりがち。 (GitHub Actions は出力 100MB くらいで強制停止。)

[19] GitHub Actions はログファイルに各行が出力された日時が書かれるので、 長時間かかる処理の分析には便利です。

[20] CircleCI はそういう便利な機能はないだけでなく、失敗したステップはなぜか実行時間が表示されないという糞仕様...