くりにっき

フルスタックキュアエンジニアです

個人でJenkinsを入れるために比較したこと

個人でJenkinsを入れてみたかったのでいろいろ調べてました

  • 料金体系は個人の小遣いで使える範囲(月数千円)でしか比較していません
  • 為替レートは $1 = 90円 で計算しています

CloudBees: The Java PaaS Company

Jenkinsのクラウドサービスで「DEV@cloud」というのがあります

料金体系

FREEの制限事項

  • 一度に実行できるビルドは1つだけ
  • ビルドは月300回月300分まで
  • Community plugins(プラグインマネージャーからのプラグインのインストール)が使えないため、使えるプラグインはデフォルトでインストールされているEssential pluginsのみに限られる

DEV@cloud自体の制限事項

  • Jenkinsの外側にcloudbeesの認証があるため、通常のやり方だとbuild hookが通らない
    • Githubに関してはGithub pluginを使えば問題なし
    • Bitbucketもできるみたいなんだけど、URLにパスワードを書かなきゃいけないのが・・・
      • http://developer.cloudbees.com/bin/view/DEV/Bitbucket
      • Bitbucketからの通知用にCloundbeesのアカウントをもう1つ作ったけどうまくいかず
      • ポーリングすればビルドできるけど、ポーリングした回数もビルドの回数に含まれるのであまり頻繁にはできない
      • 1分おきにポーリングしてるとすぐに制限オーバーします(経験者談)
    • CloudbeesがJenkinsとは別に提供してるCloudBees Forge(無料でGitとSVNのprivate repoository)があるので、bitbucketの人はそれを使うのがよさそう
      • ビルドトリガで設定できるのもよい f:id:sue445:20130123001158p:plain
      • 純粋なリポジトリ機能のみで、wikiとかissue管理はないです

制限はいろいろあるものの一通りセットアップされているためアカウント作成直後にすぐにJenkinsを使えるのは嬉しい

Amazon EC2

料金体系

  • http://aws.amazon.com/jp/ec2/#pricing
  • micro: 1時間あたり$0.027 = 月$19.44 = 月1749.6円
    • 最初1年間は無料で使える
  • small: 1時間あたり$0.092 = 月$66.24 = 月5961.6円

最初はmicroインスタンスでJenkinsを構築してたのですが、メモリ613MBしかないのが結構きついです

  • Javaのテストだとtomcatmavenで実質2つJavaが立ち上がることになるので、ピーキーなメモリ配分が求められるw
  • ビルド中に何度メモリ不足でビルドが突然死したことかorz
  • スペック表のCPUの欄に「最大2 EC2 コンピューティングユニット(ECU)(短期の定期的なバースト)」とあるけど、どうも1コア以下のスペックらしいのでビルドが走っているとJenkins自体がまともに動かない

さくらVPS

料金体系

  • 1G: 月980円
    • 仮想2コア
  • 2G: 月1480円
    • 仮想3コア
    • 自分の時は石狩リージョンだと期間限定で初期費用無料
  • 4G: 月3980円 + 初期費用5980円
    • 仮想4コア

自分が出した結論

  • Cloudbeesだとbitbucketとの連携がうまくいかなかったので断念 (単に自分のスキル不足なわけですが)
  • Amazon EC2はmicroインスタンスだとまともにJenkinsが使えないし、その次に安いsmallインスタンスだと月6000円に跳ね上がるため断念
  • さくらVPSだと値段の割にスペックが高め
    • 1Gと2Gで迷ったけど、メモリ1GBだと若干心配だったので2Gを選択
    • スペック高い方がビルドが早く終わるのが良いですね

まとめ

  • とりあえずさくっと使いたいならDEV@cloud のFREEを選択
  • そこで物足りなくなったらDEV@cloud BASEかさくらVPS(1Gか2G)を検討
  • 個人でJenkinsを使うためだけにAmazon EC2はきつい
  • 自宅サーバある人はそこに入れるのがいいと思う ( ´∀`)
                  • -

追記

Twitterでのやり取りを追記

microインスタンスを2つ利用&使わない時はインスタンス落とすという発想はなかった

デメリット

  • push前にEC2インスタンス起動→nginx or apache起動*1tomcat起動という手順が発生するので手間
    • jobのinstance起動はpluginでなんとかなるみたいだけどJenkins本体に関しては手動で上げないとダメな気がする
    • 面倒くさいと忘れる(にんげんだもの)
  • microインスタンスはスペックがしょぼいためテストが遅い
                  • -

2013/11/7追記

指摘をうけて修正

http://www.cloudbees.com/platform/pricing/devcloud.cb

「up to 300 per month」って月300回までじゃなくて月300分までって意味だったのかorz

*1:tomcatで直接アクセスを受けてる場合は不要