新年を迎えて早々の2015年1月11日(日)、Jenkinsユーザカンファレンス を開催しました。日本では第2回目となる今回のカンファレンス、会場は前回と同じく法政大学で、参加者は500名ほどでした。本稿では基調講演を中心にレポートをお届けします。
Jenkinsプロジェクトの現状
Jenkinsの生みの親である川口耕介氏の基調講演 では、まずJenkinsプロジェクトの現状報告がありました。
Jenkinsの利用統計
Jenkinsの利用者数や利用シーンは、順調に増加しています。
Jenkinsのインストール数やスレーブ数・ジョブ数が増加していること、Javaのツール群の中でもJUnitについで70%のユーザが利用しているといった調査結果を取り上げました。その他にも、登録されているプラグインの数が1,000を超えたことや、さらにはJenkinsの画面がテレビで放映されるまでになったことが紹介され、Jenkinsの勢いを感じることができました。
なお、今回のカンファレンス参加者から取ったアンケートの集計結果を、基調講演の前座で発表しています。その資料 は公開されていますので、日本でのJenkinsの利用状況として参考にしてください。
DotCi
続いて、GitHub専用のJenkinsディストリビューションDotCi の紹介がありました。DotCiは、実際には他のJenkinsプラグインと同様に、Jenkinsの管理画面(プラグインマネージャー)からインストールできます。
DotCiの大きな特徴は、GitHubとの連携機能です。GitHubのWebhookを自動で設定する機能や、Jenkinsのビルド結果に応じてGitHubのコミットステータスを変更する機能、Jenkinsの認可処理をGitHubのリポジトリ権限と一致させる機能がその一例です。
DotCiでは、".ci.yml"というファイルに設定を記述し、そのファイルをバージョン管理システムにコミットしておきます。Travis CI での".travis.yml"に相当するものをイメージするといいでしょう。
その他、Jenkinsのスケーラビリティを確保するために、バックエンドにMongoDB を採用しています。そのため、素のJenkinsと比べて、環境構築の手間が増える点は注意が必要です。
Docker 連携
昨今の流れから、Docker との連携についても見逃せません。
Jenkinsには、いくつかのDockerプラグインが登録されています。代表的なプラグインに、Dockerコンテナ内で使い捨てスレーブを走らせるDocker Plugin 、Dockerイメージのビルドとアップロードを行うDocker Build Publish Plugin があります。上述したDotCiでも、Dockerをサポートしています。
また、Jenkinsには公式のDockerイメージも提供されており、"docker run -p 8080:8080 jenkins"といったコマンドで手軽に起動できます。
その他の改善
こうした事柄以外にも、細かい改善や取り組みが引き続き進められています。
ChefやPuppetと組み合わせて、取り扱うファイルのトレーサビリティ確保
UI/UXの改善
受け入れテストの充実化
いくつかのUI改善はすでに取り込まれています。Jenkinsの見た目が以前と比べてがらっと変わったため、気づいている方も多いかもしれませんね。
複雑なワークフローをシンプルに記述できる、Jenkins Workflow Plugin
Jenkinsプロジェクトの現状報告に続いて、川口氏が昨年取り組んでいたWorkflow Plugin の紹介がありました。
Workflow Pluginの目的
Workflow Pluginが解決しようとしている課題は、Jenkinsで複雑なワークフローを実現する際の手間を減らすことです。従来のJenkinsとプラグインの組み合わせだと、複数のジョブをまたがって設定をする必要があり、見通しが悪くなりがちでした。また、ジョブのループ・並列実行やエラーハンドリングの設定は、非常に煩雑でした。
Workflow Pluginの特徴
Workflow Pluginでは、一つのジョブで複雑なワークフローを記述できます。フローは、次のようにGroovyを用いたDSLで記述します。一見しただけで、何をしようとしているか、全体像が把握できます。
node("linux") {
git 'https://github.com/foo/bar.git'
sh "mvn install"
parallel(
{ sh "./regression-test.sh" },
{ sh "./performance-test.sh" }
)
…
}
また、プログラミング言語であるGroovyの記述能力を生かして、ループ処理やエラーハンドリングを容易に記述できます。その他にも、すべて自動で処理実行するだけでなく人間との対話をフロー中に組み込む機能や、エラー時にフローの途中から再開できる機能、何らかの理由でJenkinsが停止しても起動後にジョブを継続できる機能なども備わっています。
Workflow Pluginの現状
Workflow Pluginは、基盤となる部分は概ね完成しており、Jenkinsの安定リリース版であるLTSでも動作します。Jenkins上で複雑なワークフローを実現しようとして、その設定の煩雑さに悩んでいる方は、Workflow Pluginを検討する価値はあるでしょう。
基調講演以外の模様
基調講演後は、各部屋に分かれてハンズオンと複数のセッションを並行して開催しました。
Jenkins Boot Camp Community Edition
今回のカンファレンスの目玉の一つが、Jenkins Boot Camp Community Editionというハンズオンです。このハンズオンでは、実際に手を動かしながらJenkinsの使い方を学ぶことができ、体験した環境をそのまま持ち帰って復習できる内容となっていました。Jenkinsを導入してみたいけれど、どこから手を付けていいか分からないといった方にとって、このハンズオンが導入きっかけの一つになっていれば幸いです。
各セッション
各部屋で行われていたセッションも、サーバ構築を含めたインフラCIや継続的デリバリーまで踏み込んだプロセスの事例紹介など、興味深いものばかりでした。前回のカンファレンスと比べて、今回の発表ではJenkins自体の使い方というより、Jenkinsはすでにあるものとして、開発・運用プロセスの中心にJenkinsを据えるようになってきていると感じています。それだけ、Jenkinsが普及してきた証拠と言えるでしょう。
なお、各セッションの資料は、セッション一覧ページ にまとめています。残念ながら都合がつかずに聴講できなかった方は、ぜひご覧ください。