6.4. Jenkins スレーブの使用

OpenShift Container Platform Jenkins イメージは、.NET Core 3.1 スレーブイメージの自動検出を提供します (dotnet-31)。

自動検出が機能するには、Jenkins スレーブ ConfigMap yaml ファイルをプロジェクトに追加する必要があります。

手順

  1. Jenkins がデプロイされているプロジェクトに切り替えます。

    $ oc project _project-name_
  2. 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>
  3. 設定をプロジェクトにインポートします。

    $ 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 つの段階があります。

  1. ソースがチェックアウトされます。
  2. アプリケーションが公開されます。
  3. バイナリービルドを使用してイメージがアセンブルされます。

    バイナリービルドの詳細については、oc を使用したバイナリーアーティファクトからアプリケーションのデプロイ」 を参照してください。

手順

Jenkins マスタースレーブパイプラインを構成するには、以下を行います。

  1. 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'
                }
              }
            }
  2. BuildConfig ファイルを OpenShift にインポートします。

    $ oc create -f buildconfig.yaml
  3. OpenShift コンソールを開きます。
  4. BuildsPipelines に移動します。

    dotnetapp-build パイプラインが利用可能です。

  5. Start Pipeline をクリックします。

    Jenkins イメージを最初にダウンロードする必要があるため、ビルドを開始するまでに時間がかかる場合があります。

    ビルド時に、OpenShift コンソールでさまざまなパイプラインステージが完了したかどうかを確認できます。View Log をクリックし、Jenkins で完了したパイプラインステージを確認することもできます。

  6. Jenkins パイプラインのビルドが完了したら、BuildsImages に移動します。

    dotnetapp イメージがビルドされ、利用可能です。