6.4. Jenkins スレーブの使用
OpenShift Container Platform Jenkins イメージは、.NET Core 3.1 スレーブイメージの自動検出を提供します (dotnet-31)。
自動検出が機能するには、Jenkins スレーブ ConfigMap yaml ファイルをプロジェクトに追加する必要があります。
手順
Jenkins がデプロイされているプロジェクトに切り替えます。
$ oc project _project-name_
dotnet-jenkins-slave.yamlファイルを作成します。注記<serviceAccount> 要素に使用される値は、Jenkins スレーブによって使用されるアカウントです。値の指定がない場合は、
defaultサービスアカウントが使用されます。kind: ConfigMap apiVersion: v1 metadata: name: dotnet-jenkins-slave-31 labels: role: jenkins-slave data: dotnet31: |- <org.csanchez.jenkins.plugins.kubernetes.PodTemplate> <inheritFrom></inheritFrom> <name>dotnet-31</name> <instanceCap>2247483647</instanceCap> <idleMinutes>0</idleMinutes> <label>dotnet-31</label> <serviceAccount>jenkins</serviceAccount> <nodeSelector></nodeSelector> <volumes/> <containers> <org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate> <name>jnlp</name> <image>registry.access.redhat.com/dotnet/dotnet-31-jenkins-slave-rhel7:latest</image> <privileged>false</privileged> <alwaysPullImage>true</alwaysPullImage> <workingDir>/tmp</workingDir> <command></command> <args>${computer.jnlpmac} ${computer.name}</args> <ttyEnabled>false</ttyEnabled> <resourceRequestCpu></resourceRequestCpu> <resourceRequestMemory></resourceRequestMemory> <resourceLimitCpu></resourceLimitCpu> <resourceLimitMemory></resourceLimitMemory> <envVars/> </org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate> </containers> <envVars/> <annotations/> <imagePullSecrets/> <nodeProperties/> </org.csanchez.jenkins.plugins.kubernetes.PodTemplate>設定をプロジェクトにインポートします。
$ oc create -f dotnet-jenkins-slave.yaml
スレーブイメージが使用されるようになりました。
例
以下の例は、OpenShift Container Platform に Jenkins パイプラインを追加する方法を示しています。Jenkins パイプラインが追加され、Jenkins マスターが実行されていない場合、OpenShift はマスターを自動的にデプロイします。Jenkins サーバーインスタンスのデプロイおよび設定に関する詳細は、OpenShift Container Platform および Jenkins を参照してください。
手順例の BuildConfig yaml ファイルには、dotnet-31 Jenkins スレーブを使用して設定された単純な Jenkins パイプラインが含まれます。サンプル BuildConfig yaml ファイルには 3 つの段階があります。
- ソースがチェックアウトされます。
- アプリケーションが公開されます。
バイナリービルドを使用してイメージがアセンブルされます。
バイナリービルドの詳細については、「
ocを使用したバイナリーアーティファクトからアプリケーションのデプロイ」 を参照してください。
手順
Jenkins マスタースレーブパイプラインを構成するには、以下を行います。
buildconfig.yamlファイルを作成します:kind: BuildConfig apiVersion: v1 metadata: name: dotnetapp-build spec: strategy: type: JenkinsPipeline jenkinsPipelineStrategy: jenkinsfile: |- node("dotnet-31") { stage('clone sources') { sh "git clone https://github.com/redhat-developer/s2i-dotnetcore-ex --branch dotnetcore-3.1 ." } stage('publish') { dir('app') { sh "dotnet publish -c Release" } } stage('create image') { dir('app') { sh 'oc new-build --name=dotnetapp dotnet:3.1 --binary=true || true' sh 'oc start-build dotnetapp --from-dir=bin/Release/{buildconfig-var}3.1/publish --follow' } } }BuildConfigファイルを OpenShift にインポートします。$ oc create -f buildconfig.yaml
- OpenShift コンソールを開きます。
Builds → Pipelines に移動します。
dotnetapp-buildパイプラインが利用可能です。Start Pipeline をクリックします。
Jenkins イメージを最初にダウンロードする必要があるため、ビルドを開始するまでに時間がかかる場合があります。
ビルド時に、OpenShift コンソールでさまざまなパイプラインステージが完了したかどうかを確認できます。View Log をクリックし、Jenkins で完了したパイプラインステージを確認することもできます。
Jenkins パイプラインのビルドが完了したら、Builds → Images に移動します。
dotnetappイメージがビルドされ、利用可能です。