第38章 OpenShift Pipeline
38.1. 概要
OpenShift Pipeline により、OpenShift でのアプリケーションのビルド、デプロイ、およびプロモートに対する制御が可能になります。Jenkins の Pipeline ビルドストラテジー、Jenkinsfiles、および OpenShift のドメイン固有言語 (DSL) (OpenShift Jenkins クライアントプラグインで提供される) の組み合わせを使用することにより、すべてのシナリオにおける高度なビルド、テスト、デプロイおよびプロモート用のパイプラインを作成できます。
38.2. OpenShift Jenkins クライアントプラグイン
OpenShift Jenkins クライアントプラグイン は Jenkins マスターにインストールされ、OpenShift DSL がアプリケーションの JenkinsFile 内で利用可能である必要があります。このプラグインは、OpenShift Jenkins イメージの使用時にデフォルトでインストールされ、有効にされます。
このプラグインのインストールおよび設定についての詳細は、「Pipeline の実行設定」を参照してください。
38.2.1. OpenShift DSL
OpenShift Jenkins クライアントプラグインは、Jenkins スレーブから OpenShift API と通信するために Fluent (流れるような) スタイルの DSL を提供します。OpenShift DSL は Groovy 構文をベースとしており、作成、ビルド、デプロイ、および削除などのアプリケーションのライフサイクルを制御する方法を提供します。
API の詳細は、実行中の Jenkins インスタンス内にあるプラグインのオンラインドキュメントに記載されています。これを検索するには、以下を実行します。
- 新規のパイプラインアイテムを作成します。
- DSL テキスト領域の下にある Pipeline Syntax をクリックします。
- 左側のナビゲーションメニューから、Global Variables Reference をクリックします。
38.3. Jenkins Pipeline ストラテジー
プロジェクト内で OpenShift Pipeline を使用するには、Jenkins Pipeline ビルドストラテジーを使用する必要があります。このストラテジーはソースリポジトリーの root で jenkinsfile
を使用するようにデフォルト設定されますが、以下の設定オプションも提供します。
-
BuildConfig 内のインラインの
jenkinsfile
フィールド。 -
ソース
contextDir
との関連で使用するjenkinsfile
の場所を参照する BuildConfig 内のjenkinsfilePath
。
オプションの jenkinsfilePath
フィールドは、ソース contextDir
との関連で使用するファイルの名前を指定します。contextDir
が省略される場合、デフォルトはリポジトリーのルートに設定されます。jenkinsfilePath
が省略される場合、デフォルトは jenkinsfile
に設定されます。
Jenkins Pipeline ストラテジーについての詳細は、「Pipeline ストラテジーのオプション」を参照してください。
38.4. Jenkinsfile
jenkinsfile
は標準的な groovy 言語構文を使用して、アプリケーションの設定、ビルド、およびデプロイメントに対する詳細な制御を可能にします。
jenkinsfile
は以下のいずれかの方法で指定できます。
- ソースコードリポジトリー内にあるファイルの使用。
-
jenkinsfile
フィールドを使用してビルド設定の一部として組み込む。
最初のオプションを使用する場合、jenkinsfile
を以下の場所のいずれかでアプリケーションソースコードリポジトリーに組み込む必要があります。
-
リポジトリーのルートにある
jenkinsfile
という名前のファイル。 -
リポジトリーのソース
contextDir
のルートにあるjenkinsfile
という名前のファイル。 -
ソース
contextDir
に関連して BuildConfig のJenkinsPiplineStrategy
セクションのjenkinsfilePath
フィールドで指定される名前のファイル (指定される場合)。指定されない場合は、リポジトリーのルートに設定されます。
jenkinsfile
は Jenkins スレーブ Pod で実行されます。ここでは OpenShift DSL を使用する場合に OpenShift クライアントのバイナリーを利用可能にしておく必要があります。
38.5. チュートリアル
Jenkins Pipeline を使用したアプリケーションのビルドおよびデプロイについての詳細な説明は、「Jenkins Pipeline のチュートリアル」を参照してください。
38.6. 詳細トピック
38.6.1. Jenkins 自動プロビジョニングの無効化
パイプラインのビルド設定が作成される場合、OpenShift は現時点で現行プロジェクトでプロビジョニングされた Jenkins マスター Pod があるかどうかを確認します。Jenkins マスターが見つからない場合、これが自動的に作成されます。この動作が必要でないか、または OpenShift の外部にある Jenkins サーバーを使用する場合は、これを無効にすることができます。
詳細は、「Configuring Pipeline Execution」を参照してください。
38.6.2. スレーブ Pod の設定
Kubernetes プラグイン も公式の Jenkins イメージに事前にインストールされます。このプラグインによって、Jenkins マスターは OpenShift でスレーブ Pod を作成し、Pod に特定ジョブの特定ランタイムを提供すると同時に、実行中のジョブをそれらに委任して拡張性を実現できます。
Kubernetes プラグインを使用してスレーブ Pod を作成する方法についての詳細は、Kubernetes プラグインを参照してください。