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