Builds の操作


builds for Red Hat OpenShift 1.3

Builds の使用

Red Hat OpenShift Documentation Team

概要

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

第1章 ビルドの実行

Builds をインストールした後、buildah または source-to-image ビルドを作成できます。ビルドに必要のないカスタムリソースを削除することもできます。

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. ログの表示

ビルド実行のログを表示して、実行時エラーを特定し、解決することができます。

前提条件

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

手順

  • いずれかの CLI を使用して、ビルド実行のログを表示します。

    oc CLI の使用

    $ oc logs <buildrun_resource_name>
    Copy to Clipboard Toggle word wrap

    shp CLI の使用

    $ shp buildrun logs <buildrun_resource_name>
    Copy to Clipboard Toggle word wrap

1.4. リソースの削除

プロジェクトで不要な場合は、BuildBuildRun、または BuildStrategy リソースを削除できます。

前提条件

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

手順

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

    oc CLI の使用

    $ oc delete builds.shipwright.io <build_resource_name>
    Copy to Clipboard Toggle word wrap

    shp CLI の使用

    $ shp build delete <build_resource_name>
    Copy to Clipboard Toggle word wrap

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

    oc CLI の使用

    $ oc delete buildrun <buildrun_resource_name>
    Copy to Clipboard Toggle word wrap

    shp CLI の使用

    $ shp buildrun delete <buildrun_resource_name>
    Copy to Clipboard Toggle word wrap

  • 次のコマンドを実行して、BuildStrategy リソースを削除します。

    oc CLI の使用

    $ oc delete buildstrategies <buildstartegy_resource_name>
    Copy to Clipboard Toggle word wrap

Legal Notice

Copyright © 2025 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 Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

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

© 2025 Red Hat