その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

Kyoto.なんか #4で最近運用しているJenkinsの情報について発表してきました

[2020-09-07追記]
この構成,もうウチではやってません!!!!
moznion.hatenadiary.com
[追記ここまで]


kyoto-nanka.connpass.com

表題の通り,最近AWS上で運用しているスケールする & 運用が省エネなJenkinsについて発表してきました.

簡単にまとめると

  • JenkinsのslaveをAWS CodeBuildに委譲することで実質無限のスケールアウトとメンテコスト削減を実現
  • JenkinsのストレージをAmazon EFSにすることでロバスト性と自動ボリューム拡張を実現
  • ElasticBeanstalk with Dockerを使って運用することで運用コストの省力化

という内容です.


会場やインターネットで質問されたことについては以下のとおりです:

値段的には従来のサービスを使うよりも下がったかどうか?

  • 試算的には下がっている
  • やはりCIが寝ている時間が多いと,CodeBuildの時間貸しスタイルがうまくはまって効くという感じ
  • とはいえ今後継続的にコストの実測を行って経過観察をする必要がある

強い環境でビルドしたいという話だったが,CodeBuildはインスタンスタイプを選べる?

  • 選べる
  • 3 GB メモリ、2vCPU
  • 7 GB メモリ、4vCPU
  • 15 GB メモリ、8vCPU
  • (会場ではうろ覚えで間違えたスペックを口走ったかもしれません,すみません)

CodeBuild上でのビルド環境はDockerということだったが,このDockerイメージはどこかにアップロードしておく? あとキャッシュみたいなのは効く?

  • CodeBuild上ではサポートされている言語であれば素のDockerイメージが提供されており,その上でビルドを行うことができる
  • 独自のビルド環境が欲しいのであれば自分でDockerイメージを構築してECRにアップロードして利用すれば良い
  • キャッシュについては任意のファイル (or ディレクトリ) をS3に突っ込んでキャッシュすることができるので便利
    • 例えば解決済みの node_modules のようなものをキャッシュしておくことが可能

プラグイン管理が魔界にならないか

Jenkins.instance.pluginManager.plugins.each{
  plugin ->
  println ("${plugin.getShortName()}")
}

Jenkinsは色々とランタイムを入れられて環境が汚くなる印象があるがどのように対処しているか

  • 実際のビルド環境は基本的にCodeBuild上なのでJenkinsがいたずらに汚くなることはなさそう
  • なんらかのランタイムをインストールする必要がある場合はDockerfileで構成管理するぞ,という気持ち
    • (まだその状況に至っていない)


という感じでした.参考になれば幸いです.

Kyoto.なんかはいろいろおもしろい話が聞けて楽しいですね.来年の開催も楽しみにしています!!