Jenkinsの作者でCloudBees CTOのKohsuke Kawaguchi氏が先月、ニースで開催されたJenkins Worldで、人気の高いCI/CDツールを現代化するために現在行っている5つの取り組みについて講演した。その目的は、Kawaguchi氏が今年初めに投稿した記事の中で論じた経年的劣化に、特に氏が“Jenkinsteins”と呼ぶ、プロジェクト数やチーム数の増加による集中的インストールの肥大化と、それに伴うパフォーマンス低下、および依存性や管理業務の複雑化に対処することだ。この取り組みは、Jenkins Evergreen、Jenkins Pipeline(Blue Ocean)、Jenkins Configuration-as-Code、Jenkins-X、Cloud-Native Jenkinsを中心に展開されている。これらはそれぞれ異なる開発ステージに対するもので、ひとつひとつが独立している。
より早いアウトオブボックス・エクスペリエンスを目標とするJenkins Evergreenは、事前設定された機構をディストリビューションに含めることで、管理作業と設定作業の軽減を実現する。また、Blue Ocean(パイプラインを明確に可視化するために現在、幅広く利用されているプラグイン)が既定のUIになり(具体的な時期は発表されていない)、現状のように、修正が必要な度に旧式のUIから切り換える必要がなくなる。Jenkins Evergreenも自動アップグレード機能を提供するものだが、Kawaguchi氏によると、ユーザが認識することはほとんどない。Evergreenは現在ベータ版であることから、実運用への導入は推奨されていない。
Kawaguchi氏はInfoQに、Evergreenの最終目標はJenkins自体の継続的デリバリを実現することだ、と語っている。ブートストラップ後にセルフテストと診断を実行し、対応するチームに情報を送信することで、エラーや傾向の監視を可能にする。アップグレードが失敗した場合の自動ロールバック機能も組み込まれている。ユーザが独自のブートストラップ後診断を追加することが可能か、という質問に対して、氏は、このプロジェクトを担当するチームが検討すべき課題だ、と述べている。
Jenkins Configuration as Code(JCasCとも呼ばれる)の目的は、JenkinsのセットアップをYAMLでコード化(実用的なデフォルトを含む)することにより、デリバリシステムのインストールとアップデートの完全に自動化を可能にすることだ。Jenkins構成の変更が他のコード変更やプルリクエストと同じように扱われて、問題のある場合はロールバックされるようになる。最終的には、Jenkins UIへの依存性を排除してセットアップと管理を簡易化し、エラーの可能性の低減と信頼性の向上を図る。運用レベルに達したJCasCプラグインのバージョン1.0は9月初めにリリースされる予定だ。
Jenkins XはJenkinsとは独立したソリューション(ただしバックでは同じパイプラインエンジンを共有している)として、今年初めに発表された。GitOpsアプローチに基づいた(DockerおよびKubernetesベースの)クラウドネイティブなアプリケーションを提供するための、主張性の強い見解を提供する。そのメリットのひとつが、一般的なサードパーティ製ツール(Helmチャート、Skaffold、Prowのバージョン1.3)を利用することによる新規導入の短期間化と、quickstart機能を特に備えたスタックによる共通パイプラインの自動化だ。さらに、管理タスクの自動化や、パイプラインに加えてKubernetesクラスタと環境の設定を行うjxコマンドラインツールがサポートされる。Jenkins Xは実運用でも使用可能である。
Jenkins Xのような別ソリューションを作るのは混乱や採用に対する抵抗感を増すのではないか、という質問に対して、Kawaguchi氏はInfoQに、JenkinsXはJenkinsと“DNAを共有”する、別のディストリビューションのようなものだ、と答えている。Jenkins XはUIサーフェースを削減した、特定のユースケースやワークフロー向けのものだ。氏はまた、採用が増えれば、ある時点でJenkins Xは旧来のJenkinsにバンドルされることになるだろう、とも考えている。Kawaguchi氏はエコシステム全体を、次のように見ている。
Jenkinsは単なるWebアプリケーションよりも大きくなり、プラグインの数も膨大です。Jednkinsは自動化のためのプラットフォームなのです。Jenkinsを本当の意味でJenkinsたらしめているのは、多くの人々が構築し、試して、新たな方向へと導く、このエコシステムに他なりません。Jenkins Xを見れば、そのDNAの存在の大きさが分かるでしょう。
最後に、Kubernetes上で動作する完全なクラウドネイティブアプリケーションとして動作するようにJenkinsを現代化し、可用性とパフォーマンスを向上することが、Cloud Nativeスペシャル・インタレスト・グループの目標だ。このグループでは、従来的なクライアント/サーバ設計を排除するために、Jenkinsのアーキテクチャを漸進的に改善する予定である。例えば、Jenkinsデータ用のプラグイン可能な外部ストレージ(現在はサーバのファイルシステム上に限定されている)や、ステートレスなJenkinsサービスへの移行などだ。この活動、あるいはその各部分に関して、現時点ではタイムラインは設定されていない。
InfoQでは、読者からのインプットを強く求めている。従来のJenkinsで、拡張に伴う苦労を感じたことはあるだろうか?現在進められている活動は、それらの苦労を解決してくれると思うだろうか?以下にコメントを寄せてほしい。
この記事を評価
- 編集者評
- 編集長アクション