1.9. Jenkins Kubernetes プラグインの使用
以下の例では、openshift-jee-sample
BuildConfig
オブジェクトにより、Jenkins Maven エージェント Pod が動的にプロビジョニングされます。Pod は Java ソースコードをクローンし、WAR ファイルを作成して、2 番目の BuildConfig
、openshift-jee-sample-docker
を実行します。2 番目の BuildConfig
は、新しい WAR ファイルをコンテナーイメージに階層化します。
OpenShift Container Platform 4.11 は、そのペイロードから OpenShift Jenkins Maven および NodeJS Agent イメージを削除しました。Red Hat はこれらのイメージを生成しなくなり、registry.redhat.io
の ocp-tools-4
リポジトリーから入手できなくなりました。Red Hat は、OpenShift Container Platform ライフサイクルポリシー に従って、重要なバグ修正またはセキュリティー CVE のためにこれらのイメージの 4.10 以前のバージョンを維持します。
詳細は、次の「関連情報」セクションの 「OpenShift Jenkins イメージに対する重要な変更」リンクを参照してください。
Jenkins Kubernetes プラグインを使用した BuildConfig
の例
動的に作成された Jenkins エージェント Pod の仕様を上書きすることも可能です。以下は、コンテナーメモリーを上書きして、環境変数を指定するように先の例を変更しています。
Jenkins Kubernetes プラグインを使用し、メモリー制限と環境変数を指定するサンプル BuildConfig
- 1
mypod
という名前の新しい Pod テンプレートが動的に定義されます。この新しい Pod テンプレート名はノードのスタンザで参照されます。- 2
cloud
の値はopenshift
に設定する必要があります。- 3
- 新しい Pod テンプレートは、既存の Pod テンプレートから設定を継承できます。この場合、OpenShift Container Platform で事前定義された Maven Pod テンプレートから継承されます。
- 4
- この例では、既存のコンテナーの値を上書きし、名前で指定する必要があります。OpenShift Container Platform に含まれる Jenkins エージェントイメージはすべて、コンテナー名として
jnlp
を使用します。 - 5
- 再びコンテナーイメージ名を指定します。これは既知の問題です。
- 6
512 Mi
のメモリー要求を指定します。- 7
512 Mi
のメモリー制限を指定します。- 8
- 環境変数
CONTAINER_HEAP_PERCENT
に値0.25
を指定します。 - 9
- ノードスタンザは、定義された Pod テンプレート名を参照します。
デフォルトで、Pod はビルドの完了時に削除されます。この動作は、プラグインを使用して、またはパイプライン Jenkinsfile 内で変更できます。
アップストリームの Jenkins では少し前に、パイプラインとインラインで podTemplate
パイプライン DSL を定義するための YAML 宣言型フォーマットが導入されました。OpenShift Container Platform の Jenkins イメージで定義されているサンプル java-builder
Pod テンプレートを使用したこのフォーマットの例は以下のようになります。