Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

第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 プラグインを参照してください。