バージョンアップ情報
Jenkins X情報
Jenkins Xとは
Jenkins X(じぇんきんずえっくす)は、Kubernetes上で動作するクラウドネイティブアプリケーションに対して継続的インテグレーション(Continuous Integration)および、継続的デリバリー(Continuous Delivery)を行うための自動ビルドツールです。
Jenkins Xは、2018年3月14日にApache Groovy の開発者であるジェームス・ストラカンが後援するJenkinsの仕様を決定する仕組みであるJenkins Enhancement Proposalで発表されました。
Jenkinsとの大きな違いは、GitOpsベースのTektonパイプラインを利用したクラウドネイティブアプリケーションを前提としたアーキテクチャになっている点です。あえて、開発プロセスを限定することで、CI/CDにかかわる設定の複雑さや、それにかかる運用の労力を低減させる狙いがあります。
Jenkins Xのロゴには当初JenkinsのウェイターにKubernetesの航海のイメージを重ねたキャラクターが使用されていましたが、現在は2019年7月に発表された自動化をイメージさせるロボットのキャラクターが主に使用されています。
Jenkins Xでは、主に以下のような機能が提供されます。
- GitOpsによるCI/CDの自動化
 - masterにマージする前のプルリクエストによるプレビュー環境
 - コメントによるIssueとプルリクエストのフィードバック
 
主な特徴
| 
 パイプラインの自動化  | 
 Jenkins Xは、Kubernetes、コンテナ、Tektonについての深い知識がなくてもCI/CDを完全に実装したGitOpsで管理可能なTektonパイプラインをプロジェクトに自動で組み込むことができます。  | 
|---|---|
| 
 複数環境の対応  | 
 Jenkins Xでは、複数環境(開発/ステージング/本番など)に対応します。Jenkins Xは、環境の管理とGitOpsとプルリクエストによる新しいバージョンのアプリケーションの環境間でのプロモーションを自動化します。  | 
| 
 プレビュー環境  | 
 Jenkins Xでは、プルリクエストに対応したプレビュー環境を起動できます。これにより、変更をメインブランチにマージする前に迅速なフィードバックを得られます。  | 
| 
 ChatOps  | 
 issueに関連したコミットコメントがあった場合、Jenkins Xのパイプラインは、リリースノートを生成します。また、新しいコミットを含むバージョンがステージング環境や本番環境へプロモートされた際には、コミット、issue、プルリクエストに自動的にコメントが投稿されます。  | 
Jenkins XによりCI/CDが自動化、高速化されることで、クラウド上の開発者は、ソフトウェアの開発に集中することができます。
Jenkins X が採用しているオープンソースプロジェクトは以下です。
- Kubernetes: ターゲットプラットフォーム
 - Tekton: クラウドネイティブパイプラインオーケストレーション
 - Kuberhealthy:システムの定期的なヘルスチェック
 - Grafana(オプション):ログ及び可観測性の一元化
 - Jenkins(オプション) :従来のパイプラインオーケストレーション
 - Nexus(オプション):アーティファクトリポジトリ
 
Jenkins Xの概念モデルは以下です。
類似プロダクト
オープンソースのCI/CDツールとしては以下のものがあります。
- Buildbot
 - GoCD
 - Jenkins
 - Spinnaker
 - Tekton
 - Travis CI
 - Gitlab
 
マイクロサービス
Jenkins Xはマイクロサービス指向で開発されており、以下のマイクロサービスを利用しています。
| 
 jx-git-operator  | 
 jenkins-x/git-operator マイクロサービスの git オペレーターと、関連のブートジョブ  | 
|---|---|
| 
 jx  | 
 以下のような開発用サービスが含まれています。 
  | 
| 
 lighthouse  | 
 jenkins-x/lighthouse は tekton パイプラインを作成、プルリクエストで ChatOps をトリガーします。 
  | 
| 
 kuberhealthy  | 
 kuberhealthy サービスが含まれており、可用性と可観測性を向上させます。  | 
| 
 nginx  | 
 有効な場合は、nginx-ingress プロバイダーが含みます。  | 
| 
 jx-vault  | 
 以下は、クラウドプロバイダーのネイティブシークレットマネージャーを使用しない場合のオプション追加機能です。 
  | 
| 
 secret-infra  | 
  | 
| 
 tekton-pipelines  | 
 tekton パイプライン コントローラーが含まれます。  | 
メリット・デメリット
メリット・必要性
- CI/CDの自動化と迅速化
 
Jenkins Xは、CI/CDパイプラインの構築を自動化し、開発者がコードをコミットすると、テスト、ビルド、デプロイが自動的に行われるように設定できます。これにより、開発者は開発作業に集中でき、リリースまでの時間を短縮できます 。
- Kubernetesネイティブな設計
 
Jenkins XはKubernetes上で動作するように設計されており、コンテナ化されたアプリケーションのデプロイとスケーリングを効率的に行うことができます 。
- GitOpsによる環境管理
 
Jenkins XはGitOpsの原則に従い、アプリケーションのデプロイや環境設定の変更をGitリポジトリを通じて管理します。これにより、変更の追跡、監査、ロールバックが容易になります 。
- プレビュー環境の提供
 
プルリクエストごとにプレビュー環境を自動的に作成できるため、開発者は変更をマージする前に実際の環境でテストし、フィードバックを得ることができます 。
- ChatOpsのサポート
 
Jenkins Xは、ChatOpsツールとの連携をサポートしており、チームはチャットインターフェースを通じてデプロイメントを監視し、アクションを実行できます。
デメリット・注意点・課題
- 習得時間
 
Kubernetesとコンテナ化の概念に不慣れなユーザーにとっては、Jenkins Xのセットアップや管理に時間を要する場合があります
- Kubernetes依存
 
Jenkins Xは特にKubernetes環境向けに設計されているため、Kubernetesを使用せず、別のコンテナオーケストレーションシステムを使用している組織には適していません。
- リソース要件
 
Jenkins Xを効果的に実行するには、特にマイクロサービスアーキテクチャとKubernetesクラスタの運用に関してのリソースと実行環境が必要になる場合があります。
- ドキュメント等の成熟度
 
Jenkins Xは伝統的なJenkinsに比べると比較的新しいプロジェクトであり、ドキュメントやコミュニティサポートがやや不足していることがあります。
- 移行の複雑さ
 
既存のJenkinsからJenkins Xへの移行は、特にKubernetesやコンテナ化の概念に精通していない場合、複雑になる可能性があります。
動作環境
Jenkins Xは、以下のような環境で動作します。
- Amazon EKS
 - Azure
 - Google Cloud GKE
 - OpenShift
 - K3s、Minikube、Kubernetes
 
Jenkins Xのライセンス
Jenkins Xは、Apache2.0ライセンスです。
Apache License(アパッチ・ライセンス)のコードが使用されていることの明記を条件に、ソースコードの自由な改変と公開が認められています。
製品ダウンロード
参考情報
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。
関連OSS
- 
サポート対象Kubernetes
クーバネティス。Dockerをはじめとするコンテナ化されたアプリケーションの展開、スケーリング、管理を行うオープンソースのプラットフォームです。
 - 
Jenkins
ジェンキンス。ソフトウェア開発プロセスの「ビルド」「デプロイ」「テスト」などの作業自動化/効率化を支援するオープンソースの継続的インテグレーション(CI)ツールです。
 - 
GitLab
ギットラボ。Gitリポジトリ機能を中心としたオープンソースのDevOps 製品です。
 - 
サポート対象Git
ギット。Linux kernelのソースコードを効率良く管理するために生まれた高機能バージョン管理システムです。
 - 
Bazel
バゼル。Google が社内開発に使用していた独自のビルドツールをオープンソース化したプロダクトです。
 - 
サポート対象Argo CD
アルゴシーディー。KubernetesのためのGitOpsに則ったCD(Continuous Delivery)ツールです。
 

