第1章 ビルドの実行


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

1.1. buildah ビルドの作成

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

前提条件

  • OpenShift Container Platform クラスターに Builds for Red Hat OpenShift Operator がインストールされている。
  • ShipwrightBuild リソースを作成している。
  • 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

    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

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

    例: oc CLI の使用

    $ oc get builds.shipwright.io buildah-golang-build

    例: shp CLI の使用

    $ shp build list

  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

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

    例: shp CLI の使用

    $ shp build run buildah-golang-build --follow 
    1

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

    例: oc CLI の使用

    $ oc get buildrun buildah-golang-buildrun

    例: shp CLI の使用

    $ shp buildrun list

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

検証

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

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

      $ oc get pods -w

      出力例

      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

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

      $ oc get tr

      出力例

      NAME                           SUCCEEDED  REASON     STARTTIME   COMPLETIONTIME
      buildah-golang-buildrun-dtrg2  True       Succeeded  11m         8m51s

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

      $ oc get br

      出力例

      NAME                     SUCCEEDED   REASON       STARTTIME     COMPLETIONTIME
      buildah-golang-buildrun  True        Succeeded    13m           11m

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

      注記

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

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

    $ podman pull image-registry.openshift-image-registry.svc:5000/<project>/<image> 
    1
    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
  2. 「buildah ビルドの作成」セクションで説明されている手順を実行します。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る