5.3. パイプラインビルド
Pipeline ビルドストラテジーは Red Hat OpenShift Service on AWS 4 では非推奨になりました。同等の機能および改善機能は、Tekton をベースとする Red Hat OpenShift Service on AWS Pipeline にあります。
					Red Hat OpenShift Service on AWS の Jenkins イメージは完全にサポートされており、ユーザーは Jenkins ユーザーのドキュメントに従ってジョブで jenkinsfile を定義するか、またはこれをソースコントロール管理システムに保存します。
				
開発者は、パイプラインビルドストラテジーを利用して Jenkins パイプラインプラグインで使用できるように Jenkins パイプラインを定義することができます。このビルドは、他のビルドタイプの場合と同様に Red Hat OpenShift Service on AWS での起動、モニタリング、管理が可能です。
				Pipeline ワークフローは、ビルド設定に直接組み込むか、または Git リポジトリーに配置してビルド設定で参照して jenkinsfile で定義します。
			
5.3.1. Red Hat OpenShift Service on AWS Pipeline について
Pipeline ビルドストラテジーは Red Hat OpenShift Service on AWS 4 では非推奨になりました。同等の機能および改善機能は、Tekton をベースとする Red Hat OpenShift Service on AWS Pipeline にあります。
						Red Hat OpenShift Service on AWS の Jenkins イメージは完全にサポートされており、ユーザーは Jenkins ユーザーのドキュメントに従ってジョブで jenkinsfile を定義するか、またはこれをソースコントロール管理システムに保存します。
					
					Pipeline により、Red Hat OpenShift Service on AWS でのアプリケーションのビルド、デプロイ、およびプロモートに対する制御が可能になります。Jenkins Pipeline ビルドストラテジー、jenkinsfiles、および Red Hat OpenShift Service on AWS のドメイン固有言語 (DSL) (Jenkins クライアントプラグインで提供される) の組み合わせを使用することにより、すべてのシナリオにおける高度なビルド、テスト、デプロイおよびプロモート用の Pipeline を作成できます。
				
Red Hat OpenShift Service on AWS Jenkins 同期プラグイン
Red Hat OpenShift Service on AWS Jenkins 同期プラグインは、ビルド設定およびビルドオブジェクトと Jenkins ジョブおよびビルドとの同期を維持し、以下を提供します。
- Jenkins での動的なジョブおよび実行の作成。
- イメージストリーム、イメージストリームタグまたは config map からのエージェント Pod テンプレートの動的作成。
- 環境変数の挿入。
- Red Hat OpenShift Service on AWS Web コンソールでの Pipeline の可視化。
- Jenkins Git プラグインとの統合。これにより、Red Hat OpenShift Service on AWS ビルドからの Jenkins Git プラグインにコミット情報が渡されます。
- シークレットを Jenkins 認証情報エントリーに同期。
Red Hat OpenShift Service on AWS Jenkins クライアントプラグイン
					Red Hat OpenShift Service on AWS Jenkins クライアントプラグインは、Red Hat OpenShift Service on AWS API Server との高度な対話を実現するために、読み取り可能かつ簡潔で、包括的で Fluent (流れるような) スタイルの Jenkins Pipeline 構文を提供することを目的とした Jenkins プラグインです。このプラグインは、スクリプトを実行するノードで使用できる必要がある Red Hat OpenShift Service on AWS コマンドラインツール (oc) を使用します。
				
					Jenkins クライアントプラグインは Jenkins マスターにインストールされ、Red Hat OpenShift Service on AWS DSL がアプリケーションの jenkinsfile 内で利用可能である必要があります。このプラグインは、Red Hat OpenShift Service on AWS Jenkins イメージの使用時にデフォルトでインストールされ、有効にされます。
				
					プロジェクト内で Red Hat OpenShift Service on AWS Pipeline を使用するには、Jenkins Pipeline ビルドストラテジーを使用する必要があります。このストラテジーはソースリポジトリーのルートで jenkinsfile を使用するようにデフォルト設定されますが、以下の設定オプションも提供します。
				
- 
							ビルド設定内のインラインの jenkinsfileフィールド。
- 
							ソース contextDirとの関連で使用するjenkinsfileの場所を参照するビルド設定内のjenkinsfilePathフィールド。
						オプションの jenkinsfilePath フィールドは、ソース contextDir との関連で使用するファイルの名前を指定します。contextDir が省略される場合、デフォルトはリポジトリーのルートに設定されます。jenkinsfilePath が省略される場合、デフォルトは jenkinsfile に設定されます。
					
5.3.2. パイプラインビルド用の Jenkins ファイルの提供
Pipeline ビルドストラテジーは Red Hat OpenShift Service on AWS 4 では非推奨になりました。同等の機能および改善機能は、Tekton をベースとする Red Hat OpenShift Service on AWS Pipeline にあります。
						Red Hat OpenShift Service on AWS の Jenkins イメージは完全にサポートされており、ユーザーは Jenkins ユーザーのドキュメントに従ってジョブで jenkinsfile を定義するか、またはこれをソースコントロール管理システムに保存します。
					
					jenkinsfile は標準的な groovy 言語構文を使用して、アプリケーションの設定、ビルド、およびデプロイメントに対する詳細な制御を可能にします。
				
					jenkinsfile は以下のいずれかの方法で指定できます。
				
- ソースコードリポジトリー内にあるファイルの使用。
- 
							jenkinsfileフィールドを使用してビルド設定の一部として組み込む。
					最初のオプションを使用する場合、jenkinsfile を以下の場所のいずれかでアプリケーションソースコードリポジトリーに組み込む必要があります。
				
- 
							リポジトリーのルートにある jenkinsfileという名前のファイル。
- 
							リポジトリーのソース contextDirのルートにあるjenkinsfileという名前のファイル。
- 
							ソース contextDirに関連して BuildConfig のJenkinsPipelineStrategyセクションのjenkinsfilePathフィールドで指定されるファイルの名前 (指定される場合)。指定されない場合は、リポジトリーのルートにデフォルト設定されます。
					jenkinsfile は Jenkins エージェント Pod で実行されます。ここでは、Red Hat OpenShift Service on AWS DSL を使用する場合に、Red Hat OpenShift Service on AWS クライアントのバイナリーを利用可能にしておく必要があります。
				
手順
Jenkins ファイルを指定するには、以下のいずれかを実行できます。
- ビルド設定に Jenkins ファイルを埋め込む
- Jenkins ファイルを含む Git リポジトリーへの参照をビルド設定に追加する
埋め込み定義
Git リポジトリーへの参照
- 1
- オプションのjenkinsfilePathフィールドは、ソースcontextDirとの関連で使用するファイルの名前を指定します。contextDirが省略される場合、デフォルトはリポジトリーのルートに設定されます。jenkinsfilePathが省略される場合、デフォルトはjenkinsfileに設定されます。
5.3.3. Pipeline ビルドの環境変数の使用
Pipeline ビルドストラテジーは Red Hat OpenShift Service on AWS 4 では非推奨になりました。同等の機能および改善機能は、Tekton をベースとする Red Hat OpenShift Service on AWS Pipeline にあります。
						Red Hat OpenShift Service on AWS の Jenkins イメージは完全にサポートされており、ユーザーは Jenkins ユーザーのドキュメントに従ってジョブで jenkinsfile を定義するか、またはこれをソースコントロール管理システムに保存します。
					
					環境変数を Pipeline ビルドプロセスで利用可能にするには、環境変数をビルド設定の jenkinsPipelineStrategy 定義に追加します。
				
定義した後に、環境変数はビルド設定に関連する Jenkins ジョブのパラメーターとして設定されます。
手順
- ビルド時に使用される環境変数を定義するには、YAML ファイルを編集します。 - jenkinsPipelineStrategy: ... env: - name: "FOO" value: "BAR"- jenkinsPipelineStrategy: ... env: - name: "FOO" value: "BAR"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
					oc set env コマンドで、ビルド設定に定義した環境変数を管理することも可能です。
				
5.3.3.1. BuildConfig 環境変数と Jenkins ジョブパラメーター間のマッピング
Pipeline ストラテジーのビルド設定への変更に従い、Jenkins ジョブが作成/更新されると、ビルド設定の環境変数は Jenkins ジョブパラメーターの定義にマッピングされます。Jenkins ジョブパラメーター定義のデフォルト値は、関連する環境変数の現在の値になります。
Jenkins ジョブの初回作成後に、パラメーターを Jenkins コンソールからジョブに追加できます。パラメーター名は、ビルド設定の環境変数名とは異なります。上記の Jenkins ジョブ用にビルドを開始すると、これらのパラメーターが使用されます。
Jenkins ジョブのビルドを開始する方法により、パラメーターの設定方法が決まります。
- 
								oc start-buildで開始された場合には、ビルド設定の環境変数が対応するジョブインスタンスに設定するパラメーターになります。Jenkins コンソールからパラメーターのデフォルト値に変更を加えても無視されます。ビルド設定値が優先されます。
- oc start-build -eで開始する場合、- -eオプションで指定される環境変数の値が優先されます。- ビルド設定にリスト表示されていない環境変数を指定する場合、それらは Jenkins ジョブパラメーター定義として追加されます。
- 
										Jenkins コンソールから環境変数に対応するパラメーターに加える変更は無視されます。ビルド設定および oc start-build -eで指定する内容が優先されます。
 
- Jenkins コンソールで Jenkins ジョブを開始した場合には、ジョブのビルドを開始する操作の一環として、Jenkins コンソールを使用してパラメーターの設定を制御できます。
ジョブパラメーターに関連付けられる可能性のあるすべての環境変数を、ビルド設定に指定することが推奨されます。これにより、ディスク I/O が減り、Jenkins 処理時のパフォーマンスが向上します。
5.3.4. Pipeline ビルドのチュートリアル
Pipeline ビルドストラテジーは Red Hat OpenShift Service on AWS 4 では非推奨になりました。同等の機能および改善機能は、Tekton をベースとする Red Hat OpenShift Service on AWS Pipeline にあります。
						Red Hat OpenShift Service on AWS の Jenkins イメージは完全にサポートされており、ユーザーは Jenkins ユーザーのドキュメントに従ってジョブで jenkinsfile を定義するか、またはこれをソースコントロール管理システムに保存します。
					
					以下の例では、nodejs-mongodb.json テンプレートを使用して Node.js/MongoDB アプリケーションをビルドし、デプロイし、検証する Red Hat OpenShift Service on AWS Pipeline を作成する方法を紹介します。
				
手順
- Jenkins マスターを作成するには、以下を実行します。 - oc project <project_name> - $ oc project <project_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - oc new-project <project_name>で新規プロジェクトを使用するか、作成するプロジェクトを選択します。- oc new-app jenkins-ephemeral - $ oc new-app jenkins-ephemeral- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 永続ストレージを使用する場合は、 - jenkins-persistentを代わりに使用します。
- 以下の内容で - nodejs-sample-pipeline.yamlという名前のファイルを作成します。注記- Jenkins Pipeline ストラテジーを使用して - Node.js/MongoDBのサンプルアプリケーションをビルドし、デプロイし、スケーリングする- BuildConfigオブジェクトを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- jenkinsPipelineStrategyで- BuildConfigオブジェクトを作成したら、インラインの- jenkinsfileを使用して、Pipeline に指示を出します。注記- この例では、アプリケーションに Git リポジトリーを設定しません。 - 以下の - jenkinsfileの内容は、Red Hat OpenShift Service on AWS DSL を使用して Groovy で記述されています。ソースリポジトリーに- jenkinsfileを追加することが推奨される方法ですが、この例では YAML Literal Style を使用して- BuildConfigにインラインコンテンツを追加しています。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 使用するテンプレートへのパス
- 1 2
- 作成するテンプレート名
- 3
- このビルドを実行するnode.jsのエージェント Pod をスピンアップします。
- 4
- この Pipeline に 20 分間のタイムアウトを設定します。
- 5
- このテンプレートラベルが指定されたものすべてを削除します。
- 6
- このテンプレートラベルが付いたシークレットをすべて削除します。
- 7
- templatePathから新規アプリケーションを作成します。
- 8
- ビルドが完了するまで最大 5 分待機します。
- 9
- デプロイメントが完了するまで最大 5 分待機します。
- 10
- すべてが正常に完了した場合は、$ {templateName}:latestイメージに$ {templateName}-staging:latestのタグを付けます。ステージング環境向けのパイプラインのビルド設定は、変更する$ {templateName}-staging:latestイメージがないかを確認し、このイメージをステージング環境にデプロイします。
 注記- 前述の例は、宣言型のパイプラインスタイルを使用して記述されていますが、以前のスクリプト化されたパイプラインスタイルもサポートされます。 
- Red Hat OpenShift Service on AWS クラスターに Pipeline - BuildConfigを作成します。- oc create -f nodejs-sample-pipeline.yaml - $ oc create -f nodejs-sample-pipeline.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 独自のファイルを作成しない場合には、以下を実行して Origin リポジトリーからサンプルを使用できます。 - oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/jenkins/pipeline/nodejs-sample-pipeline.yaml - $ oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/jenkins/pipeline/nodejs-sample-pipeline.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- Pipeline を起動します。 - oc start-build nodejs-sample-pipeline - $ oc start-build nodejs-sample-pipeline- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- または、Red Hat OpenShift Service on AWS Web コンソールで Builds - Pipeline セクションに移動して、Start Pipeline をクリックするか、Jenkins コンソールから作成した Pipeline に移動して、Build Now をクリックして Pipeline を起動できます。 - パイプラインが起動したら、以下のアクションがプロジェクト内で実行されるはずです。 - ジョブインスタンスが Jenkins サーバー上で作成される
- パイプラインで必要な場合には、エージェント Pod が起動される
- Pipeline がエージェント Pod で実行されるか、エージェントが必要でない場合には master で実行される - 
											template=nodejs-mongodb-exampleラベルの付いた以前に作成されたリソースは削除されます。
- 
											新規アプリケーションおよびそれに関連するすべてのリソースは、nodejs-mongodb-exampleテンプレートで作成されます。
- ビルドは - nodejs-mongodb-example- BuildConfigを使用して起動されます。- Pipeline は、ビルドが完了して次のステージをトリガーするまで待機します。
 
- デプロイメントは、 - nodejs-mongodb-exampleのデプロイメント設定を使用して開始されます。- パイプラインは、デプロイメントが完了して次のステージをトリガーするまで待機します。
 
- 
											ビルドとデプロイに成功すると、nodejs-mongodb-example:latestイメージがnodejs-mongodb-example:stageとしてトリガーされます。
 
- 
											
- エージェント Pod は、パイプラインで以前に要求されていた場合には削除される 注記- Red Hat OpenShift Service on AWS Web コンソールで確認すると、最適な方法で Pipeline の実行を視覚的に把握することができます。Web コンソールにログインして、Builds - Pipelines に移動し、Pipeline を確認します。