Builds の操作


builds for Red Hat OpenShift 1.6

Builds の使用

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、Builds を使用するためのサンプル手順を説明します。

第1章 Builds の管理

Builds をインストールしたら、buildahsource-to-image、または buildpacks を使用してビルドを作成できます。Open Container Initiative (OCI) を使用してビルドを作成することもできます。ビルドに必要のないカスタムリソースを削除することもできます。

1.1. buildah ビルドの作成

buildah ビルドを作成し、作成したイメージをターゲットレジストリーにプッシュできます。

前提条件

  • OpenShift Container Platform クラスターに Builds for Red Hat OpenShift Operator がインストールされている。
  • oc CLI がインストールされている。
  • オプション: shp CLI がインストールされている。

手順

  1. Build リソースを作成し、次のいずれかの CLI を使用して OpenShift Container Platform クラスターに適用します。

    例: oc CLI の使用

    $ oc apply -f - <<EOF
    apiVersion: shipwright.io/v1beta1
    kind: Build
    metadata:
      name: buildah-golang-build
    spec:
      source: 
    1
    
        type: Git
        git:
          url: https://github.com/shipwright-io/sample-go
        contextDir: docker-build
      strategy: 
    2
    
        name: buildah
        kind: ClusterBuildStrategy
      paramValues: 
    3
    
      - name: dockerfile
        value: Dockerfile
      output: 
    4
    
        image: image-registry.openshift-image-registry.svc:5000/buildah-example/sample-go-app
    EOF
    Copy to Clipboard Toggle word wrap

    1
    ソースコードが配置される場所。
    2
    コンテナーの構築に使用するビルドストラテジー。
    3
    ビルドストラテジーで定義されるパラメーター。dockerfile ストラテジーパラメーターの値を設定するには、出力イメージの構築に必要な Dockerfile の場所を指定します。
    4
    ビルドイメージがプッシュされる場所。この手順例では、ビルドされたイメージが OpenShift Container Platform クラスターの内部レジストリーにプッシュされます。buildah-example は現在のプロジェクトの名前です。イメージのプッシュを許可するために、指定されたプロジェクトが存在することを確認します。

    例: shp CLI の使用

    $ shp build create buildah-golang-build \
    --source-url="https://github.com/redhat-openshift-builds/samples" --source-context-dir="buildah-build" \
    1
    
    --strategy-name="buildah" \
    2
    
    --dockerfile="Dockerfile" \
    3
    
    --output-image="image-registry.openshift-image-registry.svc:5000/buildah-example/go-app" 
    4
    Copy to Clipboard Toggle word wrap

    1
    ソースコードが配置される場所。
    2
    コンテナーの構築に使用するビルドストラテジー。
    3
    ビルドストラテジーで定義されるパラメーター。dockerfile ストラテジーパラメーターの値を設定するには、出力イメージの構築に必要な Dockerfile の場所を指定します。
    4
    ビルドイメージがプッシュされる場所。この手順例では、ビルドされたイメージが OpenShift Container Platform クラスターの内部レジストリーにプッシュされます。buildah-example は現在のプロジェクトの名前です。イメージのプッシュを許可するために、指定されたプロジェクトが存在することを確認します。
  2. Build リソースが CLI のいずれかを使用して作成されていることを確認します。

    例: oc CLI の使用

    $ oc get builds.shipwright.io buildah-golang-build
    Copy to Clipboard Toggle word wrap

    例: shp CLI の使用

    $ shp build list
    Copy to Clipboard Toggle word wrap

  3. BuildRun リソースを作成し、次のいずれかの CLI を使用して OpenShift Container Platform クラスターに適用します。

    例: oc CLI の使用

    $ oc apply -f - <<EOF
    apiVersion: shipwright.io/v1beta1
    kind: BuildRun
    metadata:
      name: buildah-golang-buildrun
    spec:
      build:
        name: buildah-golang-build 
    1
    
    EOF
    Copy to Clipboard Toggle word wrap

    1
    spec.build.name フィールドは、実行するそれぞれのビルドを示し、同じ namespace で使用できる必要があります。

    例: shp CLI の使用

    $ shp build run buildah-golang-build --follow 
    1
    Copy to Clipboard Toggle word wrap

    1
    オプション: --follow オプションのフラグを使用すると、出力結果のビルドログを表示できます。
  4. 次のいずれかのコマンドを実行して、BuildRun リソースが作成されているかどうかを確認します。

    例: oc CLI の使用

    $ oc get buildrun buildah-golang-buildrun
    Copy to Clipboard Toggle word wrap

    例: shp CLI の使用

    $ shp buildrun list
    Copy to Clipboard Toggle word wrap

    BuildRun リソースは TaskRun リソースを作成し、その後ビルドストラテジーの手順を実行する Pod を作成します。

検証

  1. すべてのコンテナーがタスクを完了したら、以下を確認します。

    • Pod で STATUS フィールドが Completed として表示されるかどうかを確認します。

      $ oc get pods -w
      Copy to Clipboard Toggle word wrap

      出力例

      NAME                                READY   STATUS    RESTARTS   AGE
      buildah-golang-buildrun-dtrg2-pod   2/2     Running   0          4s
      buildah-golang-buildrun-dtrg2-pod   1/2     NotReady  0          7s
      buildah-golang-buildrun-dtrg2-pod   0/2     Completed 0          55s
      Copy to Clipboard Toggle word wrap

    • それぞれの TaskRun リソースに SUCCEEDED フィールドが True と表示されているかどうかを確認します。

      $ oc get tr
      Copy to Clipboard Toggle word wrap

      出力例

      NAME                           SUCCEEDED  REASON     STARTTIME   COMPLETIONTIME
      buildah-golang-buildrun-dtrg2  True       Succeeded  11m         8m51s
      Copy to Clipboard Toggle word wrap

    • それぞれの BuildRun リソースに SUCCEEDED フィールドが True と表示されているかどうかを確認します。

      $ oc get br
      Copy to Clipboard Toggle word wrap

      出力例

      NAME                     SUCCEEDED   REASON       STARTTIME     COMPLETIONTIME
      buildah-golang-buildrun  True        Succeeded    13m           11m
      Copy to Clipboard Toggle word wrap

      検証中にビルドの実行が失敗した場合は、BuildRun リソースの status.failureDetails フィールドをチェックして、Pod またはコンテナー内で失敗が発生した正確なポイントを特定できます。

      注記

      コンテナーの 1 つがタスクを完了したため、Pod が NotReady 状態に切り替わる可能性があります。これは想定される動作です。

  2. build.spec.output.image フィールドで指定されたレジストリーにイメージがプッシュされたかどうかを検証します。内部レジストリーにアクセスできるノードから次のコマンドを実行して、イメージのプルを試みることができます。

    $ podman pull image-registry.openshift-image-registry.svc:5000/<project>/<image> 
    1
    Copy to Clipboard Toggle word wrap
    1
    Build リソースの作成時に使用されるプロジェクト名とイメージ名。たとえば、buildah-example をプロジェクト名として、sample-go-app をイメージ名として使用できます。

1.1.1. ネットワークが制限された環境での buildah ビルドの作成

buildah ビルドストラテジーに必要なイメージのミラーリングを行い、ネットワーク制限環境で buildah ビルドを作成できます。

前提条件

  • クラスターが buildah ビルドを作成するのに使用できる git ソースに接続し、操作できる。

手順

  1. 以下のコマンドを実行して、buildah ビルドストラテジーに必要なイメージのミラーリングを行います。

    $ oc image mirror --insecure -a <registry_authentication> registry.redhat.io/ubi8/buildah@sha256:1c89cc3cab0ac0fc7387c1fe5e63443468219aab6fd531c8dad6d22fd999819e <mirror_registry>/<repo>/ubi8_buildah
    Copy to Clipboard Toggle word wrap
  2. 「buildah ビルドの作成」セクションで説明されている手順を実行します。

1.2. source-to-image ビルドの作成

source-to-image ビルドを作成し、作成したイメージをカスタム Quay リポジトリーにプッシュできます。

前提条件

  • OpenShift Container Platform クラスターに Builds for Red Hat OpenShift Operator がインストールされている。
  • oc CLI がインストールされている。
  • オプション: shp CLI がインストールされている。

手順

  1. Build リソースを作成し、次のいずれかの CLI を使用して OpenShift Container Platform クラスターに適用します。

    例: oc CLI の使用

    $ oc apply -f - <<EOF
    apiVersion: shipwright.io/v1beta1
    kind: Build
    metadata:
      name: s2i-nodejs-build
    spec:
      source: 
    1
    
        type: Git
        git:
          url: https://github.com/redhat-openshift-builds/samples
        contextDir: s2i-build/nodejs
      strategy: 
    2
    
        name: source-to-image
        kind: ClusterBuildStrategy
      paramValues: 
    3
    
      - name: builder-image
        value: quay.io/centos7/nodejs-12-centos7:master
      output:
        image: quay.io/<repo>/s2i-nodejs-example 
    4
    
        pushSecret: registry-credential 
    5
    
    EOF
    Copy to Clipboard Toggle word wrap

    1
    ソースコードが配置される場所。
    2
    コンテナーの構築に使用するビルドストラテジー。
    3
    ビルドストラテジーで定義されるパラメーター。builder-image ストラテジーパラメーターの値を設定するには、出力イメージのビルドに必要なビルダーイメージの場所を指定します。
    4
    ビルドイメージがプッシュされる場所。ビルドされたイメージをカスタム Quay.io リポジトリーにプッシュできます。repo は、有効な Quay.io 組織または Quay ユーザー名に置き換えます。
    5
    コンテナーイメージをプッシュするための認証情報を保存するシークレット名。認証用に docker-registry タイプのシークレットを生成するには、「コンテナーレジストリーへの認証」を参照してください。

    例: shp CLI の使用

    $ shp build create s2i-nodejs-build \
    --source-url="https://github.com/redhat-openshift-builds/samples" --source-context-dir="s2i-build/nodejs" \
    1
    
    --strategy-name="source-to-image" \
    2
    
    --builder-image="quay.io/centos7/nodejs-12-centos7" \
    3
    
    --output-image="quay.io/<repo>/s2i-nodejs-example" \
    4
    
    --output-credentials-secret="registry-credential" 
    5
    Copy to Clipboard Toggle word wrap

    1
    ソースコードが配置される場所。
    2
    コンテナーの構築に使用するビルドストラテジー。
    3
    ビルドストラテジーで定義されるパラメーター。builder-image ストラテジーパラメーターの値を設定するには、出力イメージのビルドに必要なビルダーイメージの場所を指定します。
    4
    ビルドイメージがプッシュされる場所。ビルドされたイメージをカスタム Quay.io リポジトリーにプッシュできます。repo は、有効な Quay.io 組織または Quay ユーザー名に置き換えます。
    5
    コンテナーイメージをプッシュするための認証情報を保存するシークレット名。認証用に docker-registry タイプのシークレットを生成するには、「コンテナーレジストリーへの認証」を参照してください。
  2. Build リソースが CLI のいずれかを使用して作成されていることを確認します。

    例: oc CLI の使用

    $ oc get builds.shipwright.io s2i-nodejs-build
    Copy to Clipboard Toggle word wrap

    例: shp CLI の使用

    $ shp build list
    Copy to Clipboard Toggle word wrap

  3. BuildRun リソースを作成し、次のいずれかの CLI を使用して OpenShift Container Platform クラスターに適用します。

    例: oc CLI の使用

    $ oc apply -f - <<EOF
    apiVersion: shipwright.io/v1beta1
    kind: BuildRun
    metadata:
      name: s2i-nodejs-buildrun
    spec:
      build:
        name: s2i-nodejs-build 
    1
    
    EOF
    Copy to Clipboard Toggle word wrap

    1
    spec.build.name フィールドは、実行するそれぞれのビルドを示し、同じ namespace で使用できる必要があります。

    例: shp CLI の使用

    $ shp build run s2i-nodejs-build --follow 
    1
    Copy to Clipboard Toggle word wrap

    1
    オプション: --follow オプションのフラグを使用すると、出力結果のビルドログを表示できます。
  4. 次のいずれかのコマンドを実行して、BuildRun リソースが作成されているかどうかを確認します。

    例: oc CLI の使用

    $ oc get buildrun s2i-nodejs-buildrun
    Copy to Clipboard Toggle word wrap

    例: shp CLI の使用

    $ shp buildrun list
    Copy to Clipboard Toggle word wrap

    BuildRun リソースは TaskRun リソースを作成し、その後ビルドストラテジーの手順を実行する Pod を作成します。

検証

  1. すべてのコンテナーがタスクを完了したら、以下を確認します。

    • Pod で STATUS フィールドが Completed として表示されるかどうかを確認します。

      $ oc get pods -w
      Copy to Clipboard Toggle word wrap

      出力例

      NAME                                READY   STATUS     RESTARTS   AGE
      s2i-nodejs-buildrun-phxxm-pod       2/2     Running    0          10s
      s2i-nodejs-buildrun-phxxm-pod       1/2     NotReady   0          14s
      s2i-nodejs-buildrun-phxxm-pod       0/2     Completed  0          2m
      Copy to Clipboard Toggle word wrap

    • それぞれの TaskRun リソースに SUCCEEDED フィールドが True と表示されているかどうかを確認します。

      $ oc get tr
      Copy to Clipboard Toggle word wrap

      出力例

      NAME                           SUCCEEDED  REASON     STARTTIME   COMPLETIONTIME
      s2i-nodejs-buildrun-phxxm      True       Succeeded  2m39s        13s
      Copy to Clipboard Toggle word wrap

    • それぞれの BuildRun リソースに SUCCEEDED フィールドが True と表示されているかどうかを確認します。

      $ oc get br
      Copy to Clipboard Toggle word wrap

      出力例

      NAME                     SUCCEEDED   REASON       STARTTIME     COMPLETIONTIME
      s2i-nodejs-buildrun      True        Succeeded    2m41s           15s
      Copy to Clipboard Toggle word wrap

      検証中にビルドの実行が失敗した場合は、BuildRun リソースの status.failureDetails フィールドをチェックして、Pod またはコンテナー内で失敗が発生した正確なポイントを特定できます。

      注記

      コンテナーの 1 つがタスクを完了したため、Pod が NotReady 状態に切り替わる可能性があります。これは想定される動作です。

  2. build.spec.output.image フィールドで指定されたレジストリーにイメージがプッシュされたかどうかを検証します。レジストリーにログインした後、以下のコマンドを実行してイメージをプルできます。

    $ podman pull quay.io/<repo>/<image> 
    1
    Copy to Clipboard Toggle word wrap
    1
    Build リソースの作成時に使用されるリポジトリー名とイメージ名。たとえば、イメージ名として s2i-nodejs-example を使用できます。

1.2.1. ネットワークが制限された環境での source-to-image ビルドの作成

source-to-image ビルドストラテジーに必要なイメージのミラーリングを行い、ネットワークが制限された環境で source-to-image ビルドを作成できます。

前提条件

  • クラスターが source-to-image ビルドの作成に使用できる git ソースに接続し、操作できる。
  • ローカルレジストリーで source-to-image ビルドを作成するために必要な builder-image がある。ローカルレジストリーに builder-image がない場合は、ソースイメージをミラーリングします。

手順

  1. 以下のコマンドを実行して、source-to-image ビルドストラテジーに必要なイメージのミラーリングを行います。

    $ oc image mirror --insecure -a <registry_authentication> registry.redhat.io/source-to-image/source-to-image-rhel8@sha256:d041c1bbe503d152d0759598f79802e257816d674b342670ef61c6f9e6d401c5 <mirror_registry>/<repo>/source-to-image-source-to-image-rhel8
    Copy to Clipboard Toggle word wrap
  2. 「source-to-image ビルドの作成セクション」で説明されている手順を実行します。

1.3. buildpacks ビルドの作成

buildpacks ビルドを作成し、作成したイメージをターゲットレジストリーにプッシュできます。builds for Red Hat OpenShift では、次のタイプの buildpacks パッククラスタービルドストラテジーが利用できます。

  • buildpacks ストラテジー
  • buildpacks-extender ストラテジー
注記

buildpacks-extender ストラテジーは、実験的な buildpacks extender のライフサイクルフェーズと互換性があります。このストラテジーは、Node.js および Python のビルドに使用できます。Quarkus および Golang のビルドには、buildpacks ストラテジーを使用してください。

前提条件

  • OpenShift Container Platform クラスターに Builds for Red Hat OpenShift Operator がインストールされている。
  • oc CLI がインストールされている。
  • oc new-project buildpacks-example コマンドを使用して、最終的なアプリケーションイメージが保存されるプロジェクトが作成されている。
  • オプション: shp CLI がインストールされている。
重要

buildpacks で shp CLI を使用するには、追加の権限設定が必要です。この設定は、buildpacks のビルドの作成を開始する前に完了しておく必要があります。

手順

  1. オプション: buildpacks で shp CLI を使用するには、まず次の 2 つのコマンドを使用して、pipeline サービスアカウントに buildpacks-example プロジェクトのイメージレジストリーにアクセスする権限を付与する必要があります。

    $ oc policy add-role-to-user system:image-puller system:serviceaccount:default:pipeline --namespace=buildpacks-example
    Copy to Clipboard Toggle word wrap
    $ oc policy add-role-to-user system:image-pusher system:serviceaccount:default:pipeline --namespace=buildpacks-example
    Copy to Clipboard Toggle word wrap
  2. オプション: プライマリー作業プロジェクトに戻って、shp CLI での作業を続行します。

    $ oc project default
    Copy to Clipboard Toggle word wrap
  3. オプション: 権限を適用して shp CLI のセットアップを終了します。

    $ oc create rolebinding allow-builds-to-push \
    
      --clusterrole=edit \
    
     --serviceaccount=default:pipeline \
    
    --namespace=buildpacks-example
    Copy to Clipboard Toggle word wrap
  4. 次のいずれかの CLI を使用して Build リソースを作成し、OpenShift Container Platform クラスターに適用します。

    • oc CLI の使用

      $ oc apply -f - <<EOF
      apiVersion: shipwright.io/v1beta1
      
      kind: Build
      
      metadata:
      
        name: buildpack-nodejs-build
      
      spec:
      
        source: 
      1
      
      
          type: Git
      
          git:
      
            url: https://github.com/redhat-openshift-builds/samples.git
      
        strategy: 
      2
      
      
          name: buildpacks
      
          kind: ClusterBuildStrategy
      
        retention:
      
          atBuildDeletion: true
      
        paramValues: 
      3
      
      
          - name: run-image 
      4
      
      
            value: paketobuildpacks/run-ubi8-base:latest
      
          - name: cnb-builder-image 
      5
      
      
            value: paketobuildpacks/builder-jammy-tiny:0.0.344
      
          - name: source-subpath 
      6
      
      
            value: "buildpacks/nodejs"
      
        output: 
      7
      
          image: image-registry.openshift-image-registry.svc:5000/buildpacks-example/taxi-app
      EOF
      Copy to Clipboard Toggle word wrap
      1
      アプリケーションのソースコードを含む Git リポジトリーを定義します。
      2
      コンテナーをビルドするためのビルドストラテジーを定義します。
      3
      buildpacks ストラテジーに設定するパラメーターを定義します。
      4
      アプリケーションが実行されるベースイメージを指定します。
      5
      Cloud Native Buildpacks (CNB) がアプリケーションを検出してビルドするために使用するビルダーイメージを指定します。
      6
      アプリケーションのソースコードが配置されている Git リポジトリー内のサブディレクトリーを指定します。
      7
      ビルドしたイメージをプッシュする場所を指定します。
    • shp CLI の使用:

      $ shp build create buildpack-nodejs-build \
      
      --source-git-url="https://github.com/redhat-openshift-builds/samples.git" \
      
      --strategy-name="buildpacks" \
      
      --output-image="image-registry.openshift-image-registry.svc:5000/buildpacks-example/taxi-app" \
      
      --param-value="source-subpath=buildpacks/nodejs" \
      
      --param-value="cnb-builder-image=paketobuildpacks/builder-jammy-tiny:0.0.344" \
      --param-value="run-image=paketobuildpacks/run-ubi8-base:latest"
      Copy to Clipboard Toggle word wrap
  5. 次のいずれかの CLI を使用して Build リソースが作成されたかどうかを確認します。

    • oc CLI の使用:

      $ oc get builds.shipwright.io buildpack-nodejs-build
      Copy to Clipboard Toggle word wrap
    • shp CLI の使用:

      $ shp build list
      Copy to Clipboard Toggle word wrap
  6. 次のいずれかの CLI を使用して BuildRun リソースを作成し、OpenShift Container Platform クラスターに適用します。

    • oc CLI の使用:

      $ oc apply -f - <<EOF
      apiVersion: shipwright.io/v1beta1
      kind: BuildRun
      metadata:
        name: buildpack-nodejs-buildrun
        namespace: builds-test
      spec:
        build:
          name: buildpack-nodejs-build 
      1
      
      EOF
      Copy to Clipboard Toggle word wrap
      1
      実行される buildpack-nodejs-build リソースを指定します。
    • shp CLI の使用:

      …​

$ shp build run buildpack-nodejs-buildrun --follow
Copy to Clipboard Toggle word wrap

+

重要

shp CLI バージョン 0.16.0 では、BuildRun リソースの名前を自動的に生成できません。名前を手動で作成する必要があります:

  1. 名前が一意の BuildRun リソースを作成します。

    $ shp buildrun create buildpack-nodejs-<buildrun_resource_name>  --buildref-name buildpack-nodejs-build 
    1
    Copy to Clipboard Toggle word wrap
    1
    ビルドを参照するフラグを指定します。
  2. ログを追跡します。

    $ shp buildrun logs buildpack-nodej-<buildrun_resource_name> --follow
    Copy to Clipboard Toggle word wrap
  1. 次のいずれかの CLI を使用して、BuildRun リソースが作成されたかどうかを確認します。

    • oc CLI の使用:

      $ oc get buildrun buildpack-nodejs-buildrun
      Copy to Clipboard Toggle word wrap
    • shp CLI の使用:

      $ shp buildrun list
      Copy to Clipboard Toggle word wrap
      注記

      BuildRun リソースは TaskRun リソースを作成し、その後ビルドストラテジーの手順を実行する Pod を作成します。

検証

  1. すべてのコンテナーがタスクを完了するまで待ちます。
  2. Pod の STATUS フィールドに Completed と表示されているかどうかを確認します。

    $ oc get pods -w
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                 READY   STATUS     RESTARTS   AGE
    buildpack-go-build-ttwkl-d8x97-pod   2/8     NotReady   0          63s
    buildpack-go-build-ttwkl-d8x97-pod   0/8     Completed   0          72s
    buildpack-go-build-ttwkl-d8x97-pod   0/8     Completed   0          73s
    Copy to Clipboard Toggle word wrap
  3. TaskRun リソースの SUCCESS フィールドに True が表示されているかどうかを確認します。

    $ oc get tr
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                             SUCCEEDED   REASON      STARTTIME   COMPLETIONTIME
    buildpack-go-build-ttwkl-d8x97   True        Succeeded   112s        38s
    Copy to Clipboard Toggle word wrap
  4. BuildRun リソースの SUCCESS フィールドに True が表示されているかどうかを確認します。

    $ oc get br
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                       SUCCEEDED   REASON      STARTTIME   COMPLETIONTIME
    buildpack-go-build-ttwkl   True        Succeeded   107s        33s
    Copy to Clipboard Toggle word wrap
    注記

    ビルド実行が失敗した場合は、BuildRun リソースの status.failureDetails フィールドをチェックして、Pod またはコンテナーで失敗した正確なポイントを特定できます。

    コンテナーの 1 つがタスクを完了したため、Pod が NotReady 状態に切り替わる可能性があります。これは想定される動作です。

  5. 内部レジストリーにアクセスしてイメージをプルできるノードから次のコマンドを実行して、build.spec.output.image フィールドで指定したレジストリーにイメージがプッシュされているかどうかを確認します。

    $ podman pull
    Copy to Clipboard Toggle word wrap

    出力例

    $ image-registry.openshift-image-registry.svc:5000/buildpacks-example/taxi-app
    Copy to Clipboard Toggle word wrap

    この例のプロジェクト名は buildpacks-example、イメージ名は taxi-app です。

1.4. OCI アーティファクトを使用したビルドの作成

Open Container Initiative (OCI) アーティファクトをソースコードとして使用してビルドを作成できます。OCI アーティファクト (スクラッチイメージとも呼ばれます) は、ソースコードだけを含むものであり、コンテナーとして実行するためのものではありません。コンテナーレジストリーから OCI アーティファクトをプルし、その内容を抽出して、ビルドを実行するためのソースコードとして使用できます。

前提条件

  • OpenShift Container Platform クラスターに Builds for Red Hat OpenShift Operator がインストールされている。
  • oc コマンドラインインターフェイス (CLI) がインストールされている。
  • shp CLI がインストールされている。

手順

  1. Build リソースを作成して OpenShift Container Platform クラスターに適用します。次の設定例を参照してください。

    $ oc apply -f - <<EOF
    apiVersion: shipwright.io/v1beta1
    kind: Build
    metadata:
      name: my-oci-build 
    1
    
    spec:
      source:
        type: OCI
        ociArtifact:
          image: <quay.io/org/image:tag> 
    2
    
      strategy:
        name: <strategy-name> 
    3
    
        kind: ClusterBuildStrategy
      output:
        image: <target-image-registry/repository/image:tag> 
    4
    
        pushSecret: <secret-name-for-credentials> 
    5
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    Build リソースの名前を定義します。
    2
    <quay.io/org/image:tag> は、OCI アーティファクトソースイメージの場所に置き換えます。
    3
    <strategy-name> は、コンテナーをビルドするためのビルドストラテジーの名前 (buildah または source-to-image) に置き換えます。
    4
    <target-image-registry/repository/image:tag> は、ビルドしたイメージをプッシュする場所に置き換えます。
    5
    オプション: <secret-name-for-credentials> は、コンテナーイメージをプッシュするための認証情報を保存するシークレット名に置き換えます。認証のためにプライベートレジストリー用のシークレットを生成するには、コンテナーレジストリーへの認証 を参照してください。
  2. 次のいずれかの方法を選択して、ソースコードを必要なレジストリーにアップロードし、ビルドを実行します。

    • shp CLI を使用します。

      • ローカルソースコードを含むディレクトリーで次のコマンドを実行します。ソースコードをスクラッチコンテナーイメージにパッケージ化し、必要なレジストリーにプッシュして、ビルドを実行します。

        $ shp build upload my-oci-build 
        1
        Copy to Clipboard Toggle word wrap
        1
        Build リソースの名前を定義します。
    • OCI アーティファクトを手動でアップロードします。

      1. ソースコードのルートディレクトリーに Containerfile を作成し、次の設定を追加します。

        FROM scratch
        COPY . /
        Copy to Clipboard Toggle word wrap
      2. ソースコードのルートディレクトリーで次のコマンドを実行し、Podman を使用してコンテナーイメージをビルドします。

        $ podman build -t <registry-path>/<image-name>:<tag> 
        1
        Copy to Clipboard Toggle word wrap
        1
        <registry-path>/<image-name>:<tag> は、コンテナーイメージのビルド場所に置き換えます。
      3. 次のコマンドを使用して、コンテナーイメージを必要な場所にプッシュします。

        $ podman push <registry-path>/<image-name>:<tag>  
        1
        Copy to Clipboard Toggle word wrap
        1
        <registry-path>/<image-name>:<tag> は、ビルドしたイメージをプッシュする場所に置き換えます。
      4. 次のコマンドを使用してビルドを実行します。

        $ shp build run my-oci-build 
        1
        Copy to Clipboard Toggle word wrap
        1
        Build リソースの名前を定義します。

1.5. リソースの編集

oc CLI を使用して、buildahsource-to-image、および buildpacks ビルドプロセスによって作成されたリソースを編集できます。プロジェクト内のリソースを必要に応じて変更できます。

前提条件

  • oc CLI がインストールされている。

手順

  1. 次のコマンドを実行して、デフォルトのエディターで YAML 定義を開きます。

    $ oc edit <resource-name> <build_resource-name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <resource-name> は、リソースの名前 (buildbuildrun、または buildstrategy) に置き換えます。<build_resource-name> は、編集するビルドリソースの名前に置き換えます。
  2. YAML 定義を編集し、ファイルを保存します。

1.6. リソースの削除

oc CLI または shp CLI を使用して、Buildah、Source-to-Image (S2I)、および Buildpacks ビルドプロセスによって作成されたリソースを削除できます。これらのリソースを削除することは、プロジェクトで不要になったビルド設定をクリーンアップするのに役立ちます。

1.6.1. build リソースの削除

プロジェクトで必要ない場合は、build リソースを削除できます。

前提条件

  • oc CLI がインストールされている。
  • オプション: shp CLI がインストールされている。

手順

  • 次のいずれかの CLI を使用して build リソースを削除します。

    • oc CLI の使用

      $ oc delete builds <build_resource_name> 
      1
      Copy to Clipboard Toggle word wrap
      1
      <build_resource_name> は、build リソースの名前に置き換えます。
    • shp CLI の使用

      $ shp build delete <build_resource_name> 
      1
      Copy to Clipboard Toggle word wrap
      1
      <build_resource_name> は、build リソースの名前に置き換えます。

1.6.2. buildrun リソースの削除

プロジェクトで必要ない場合は、buildrun リソースを削除できます。

前提条件

  • oc CLI がインストールされている。
  • オプション: shp CLI がインストールされている。

手順

  • 次のいずれかの CLI を使用して build リソースを削除します。

    • oc CLI の使用

      $ oc delete buildrun <buildrun_resource_name> 
      1
      Copy to Clipboard Toggle word wrap
      1
      <buildrun_resource_name> は、buildrun リソースの名前に置き換えます。
    • shp CLI の使用

      $ oc delete buildrun <buildrun_resource_name> 
      1
      Copy to Clipboard Toggle word wrap
      1
      <buildrun_resource_name> は、buildrun リソースの名前に置き換えます。

1.6.3. buildstrategy リソースの削除

プロジェクトで必要ない場合は、buildstrategy リソースを削除できます。

前提条件

  • oc CLI がインストールされている。

手順

  • oc CLI を使用して buildstrategy リソースを削除します。

    $ oc delete buildstrategy <buildstartegy_resource_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <buildstartegy_resource_name> は、buildstrategy リソースの名前に置き換えます。

Legal Notice

Copyright © Red Hat

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of the OpenJS Foundation.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る