5.3. パイプラインビルド
Pipeline ビルドストラテジーは OpenShift Dedicated 4 では非推奨になりました。同等の機能および改善機能は、Tekton をベースとする OpenShift Dedicated Pipeline にあります。
OpenShift Dedicated 上の Jenkins イメージは完全にサポートされており、ユーザーは Jenkins ユーザードキュメントに従ってジョブで jenkinsfile
を定義するか、ソースコントロール管理システムに保存する必要があります。
開発者は、パイプラインビルドストラテジーを利用して Jenkins パイプラインプラグインで使用できるように Jenkins パイプラインを定義することができます。このビルドは他のビルドタイプの場合と同様に OpenShift Dedicated での起動、モニタリング、管理が可能です。
パイプラインワークフローは、ビルド設定に直接組み込むか、Git リポジトリーに配置してビルド設定で参照して jenkinsfile
で定義します。
5.3.1. OpenShift Dedicated Pipeline について リンクのコピーリンクがクリップボードにコピーされました!
Pipeline ビルドストラテジーは OpenShift Dedicated 4 では非推奨になりました。同等の機能および改善機能は、Tekton をベースとする OpenShift Dedicated Pipeline にあります。
OpenShift Dedicated 上の Jenkins イメージは完全にサポートされており、ユーザーは Jenkins ユーザードキュメントに従ってジョブで jenkinsfile
を定義するか、ソースコントロール管理システムに保存する必要があります。
Pipeline により、OpenShift Dedicated でのアプリケーションのビルド、デプロイ、およびプロモートに対する制御が可能になります。Jenkins Pipeline ビルドストラテジー、jenkinsfiles
、および Jenkins クライアントプラグインによって提供される OpenShift Dedicated ドメイン固有言語 (DSL) を組み合わせて使用することで、あらゆるシナリオに対応した高度なビルド、テスト、デプロイ、およびプロモートパイプラインを作成できます。
OpenShift Dedicated Jenkins 同期プラグイン
OpenShift Dedicated Jenkins Sync プラグインは、ビルド設定とビルドオブジェクトを Jenkins ジョブおよびビルドと同期させ、次の機能を提供します。
- Jenkins での動的なジョブおよび実行の作成。
- イメージストリーム、イメージストリームタグまたは config map からのエージェント Pod テンプレートの動的作成。
- 環境変数の挿入。
- OpenShift Dedicated Web コンソールでのパイプラインの視覚化。
- Jenkins Git プラグインとの統合。これにより、OpenShift Dedicated ビルドからのコミット情報が Jenkins Git プラグインに渡されます。
- シークレットを Jenkins 認証情報エントリーに同期。
OpenShift Dedicated Jenkins Client プラグイン
OpenShift Dedicated Jenkins Client プラグインは、OpenShift Dedicated API Server との高度な対話を実現するために、読み取り可能かつ簡潔で、包括的で Fluent (流れるような) な Jenkins パイプライン構文を提供することを目的とした Jenkins プラグインです。プラグインは OpenShift Dedicated コマンドラインツール oc
を使用します。このツールは、スクリプトを実行するノードで使用できる必要があります。
Jenkins クライアントプラグインを Jenkins マスターにインストールして、アプリケーションの jenkinsfile
内で OpenShift Dedicated DSL を使用できるようにする必要があります。このプラグインは、OpenShift Dedicated Jenkins イメージを使用する場合、デフォルトでインストールされ、有効になります。
プロジェクト内で OpenShift Dedicated Pipeline を使用するには、Jenkins Pipeline ビルドストラテジーを使用する必要があります。このストラテジーはソースリポジトリーのルートで jenkinsfile
を使用するようにデフォルト設定されますが、以下の設定オプションも提供します。
-
ビルド設定内のインラインの
jenkinsfile
フィールド。 -
ソース
contextDir
との関連で使用するjenkinsfile
の場所を参照するビルド設定内のjenkinsfilePath
フィールド。
オプションの jenkinsfilePath
フィールドは、ソース contextDir
との関連で使用するファイルの名前を指定します。contextDir
が省略される場合、デフォルトはリポジトリーのルートに設定されます。jenkinsfilePath
が省略される場合、デフォルトは jenkinsfile
に設定されます。
5.3.2. パイプラインビルド用の Jenkins ファイルの提供 リンクのコピーリンクがクリップボードにコピーされました!
Pipeline ビルドストラテジーは OpenShift Dedicated 4 では非推奨になりました。同等の機能および改善機能は、Tekton をベースとする OpenShift Dedicated Pipeline にあります。
OpenShift Dedicated 上の Jenkins イメージは完全にサポートされており、ユーザーは Jenkins ユーザードキュメントに従ってジョブで jenkinsfile
を定義するか、ソースコントロール管理システムに保存する必要があります。
jenkinsfile
は標準的な groovy 言語構文を使用して、アプリケーションの設定、ビルド、およびデプロイメントに対する詳細な制御を可能にします。
jenkinsfile
は以下のいずれかの方法で指定できます。
- ソースコードリポジトリー内にあるファイルの使用。
-
jenkinsfile
フィールドを使用してビルド設定の一部として組み込む。
最初のオプションを使用する場合、jenkinsfile
を以下の場所のいずれかでアプリケーションソースコードリポジトリーに組み込む必要があります。
-
リポジトリーのルートにある
jenkinsfile
という名前のファイル。 -
リポジトリーのソース
contextDir
のルートにあるjenkinsfile
という名前のファイル。 -
ソース
contextDir
に関連して BuildConfig のJenkinsPipelineStrategy
セクションのjenkinsfilePath
フィールドで指定される名前のファイル (指定した場合)。指定しないと、リポジトリーのルートにデフォルト設定されます。
jenkinsfile
は Jenkins エージェント Pod 上で実行されます。OpenShift Dedicated DSL を使用する場合は、OpenShift Dedicated クライアントバイナリーが利用可能になっている必要があります。
手順
Jenkins ファイルを指定するには、以下のいずれかを実行できます。
- ビルド設定に Jenkins ファイルを埋め込む
- Jenkins ファイルを含む Git リポジトリーへの参照をビルド設定に追加する
埋め込み定義
Git リポジトリーへの参照
- 1
- オプションの
jenkinsfilePath
フィールドは、ソースcontextDir
との関連で使用するファイルの名前を指定します。contextDir
が省略される場合、デフォルトはリポジトリーのルートに設定されます。jenkinsfilePath
が省略される場合、デフォルトはjenkinsfile
に設定されます。
5.3.3. Pipeline ビルドの環境変数の使用 リンクのコピーリンクがクリップボードにコピーされました!
Pipeline ビルドストラテジーは OpenShift Dedicated 4 では非推奨になりました。同等の機能および改善機能は、Tekton をベースとする OpenShift Dedicated Pipeline にあります。
OpenShift Dedicated 上の 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 ビルドストラテジーは OpenShift Dedicated 4 では非推奨になりました。同等の機能および改善機能は、Tekton をベースとする OpenShift Dedicated Pipeline にあります。
OpenShift Dedicated 上の Jenkins イメージは完全にサポートされており、ユーザーは Jenkins ユーザードキュメントに従ってジョブで jenkinsfile
を定義するか、ソースコントロール管理システムに保存する必要があります。
この例では nodejs-mongodb.json
テンプレートを使用して Node.js/MongoDB
アプリケーションをビルド、デプロイ、検証する OpenShift Dedicated 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
の内容は、OpenShift Dedicated 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
イメージがないかを確認し、このイメージをステージング環境にデプロイします。
注記前述の例は、宣言型のパイプラインスタイルを使用して記述されていますが、以前のスクリプト化されたパイプラインスタイルもサポートされます。
OpenShift Dedicated クラスターに 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 注記または、OpenShift Dedicated Web コンソールで Builds→Pipeline セクションに移動して Start Pipeline をクリックするか、Jenkins コンソールにアクセスして作成したパイプラインに移動して Build Now をクリックし、パイプラインを開始することもできます。
パイプラインが起動したら、以下のアクションがプロジェクト内で実行されるはずです。
- ジョブインスタンスが 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 は、パイプラインで以前に要求されていた場合には削除される
注記OpenShift Web コンソールで表示すると、最適な方法で Pipeline の実行を視覚的に視覚化できます。Web コンソールにログインして、Builds
Pipelines に移動し、Pipeline を確認します。