基本的なビルド構成ファイルの作成

このページでは、Cloud Build でビルドを開始するために使用できるビルド構成ファイルを作成する方法について説明します。

ビルド構成ファイルでは、Cloud Build がタスクを実行するために必要なフィールドを定義します。gcloud コマンドライン ツールまたはビルドトリガーを使用してビルドを開始する場合、ビルド構成ファイルが必要です。ビルド構成ファイルは YAML または JSON 構文で記述します。

始める前に

  • ビルド構成の概要を読み、ビルド構成ファイルに含めることができるすべてのフィールドについて確認してください。

ビルド構成の作成

次の手順では、単純なビルド構成ファイルを作成する方法について説明しています。構成ファイルの各フィールドで、実行するタスクの一部を定義します。ビルド構成ファイルの唯一の必須フィールドは、ステップの name フィールドです。その他のフィールドはすべてオプションです。

YAML

  1. ビルド構成ファイルを作成します。プロジェクトのルート ディレクトリに、cloudbuild.yaml という名前のファイルを作成します。これが、Cloud Build のビルド構成ファイルです。

  2. ステップ フィールドを追加します。ビルド構成ファイルの steps セクションには、Cloud Build で実行するビルドステップが含まれています。

    steps:
    
  3. 最初のステップを追加しますsteps: で、name フィールドを追加して、タスクを実行するコンテナ イメージを指すように指定します。Cloud Build とそのデベロッパー コミュニティでは、一般的なツールと言語がインストールされたコンテナ イメージが複数提供されています。このようなイメージ(クラウド ビルダーとも呼ばれます)のいずれか、または一般公開されているイメージをビルドステップで使用できます。ビルドステップで使用できるさまざまなタイプのコンテナ イメージについては、クラウド ビルダーをご覧ください。

    次のスニペットは、docker ビルダー gcr.io/cloud-builders/docker を含むビルドステップを示しています。これは、Docker を実行するコンテナ イメージです。

    steps:
    - name: 'gcr.io/cloud-builders/docker'
    
  4. ステップの引数を追加します。ステップの args フィールドは引数のリストを受け取り、name フィールドで参照されるビルダーに渡します。

    次の例では、docker build コマンドを呼び出すための引数を受け取り、docker ビルダーに渡します。引数は次のとおりです。

    • コマンド名(build
    • Docker タグ(t
    • ビルドされるイメージの名前(gcr.io/my-project/my-image
    • ソースコードの場所(「.」はソースコードが現在の作業ディレクトリに存在することを意味します)。

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      
  5. ステップの追加フィールドを含めます。環境変数や作業ディレクトリなどのビルドステップにフィールドを追加すると、ビルドステップを構成できます。ビルドステップに含めることができるすべてのフィールドについては、ビルドステップをご覧ください。

    次の例では、500 秒後に docker ステップがタイムアウトする必要があることを指定する timeout フィールドが含まれています。

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      timeout: 500s
    
  6. ステップを追加しますname フィールドを追加してクラウド ビルダーを指すように指定すると、ビルド構成ファイルに任意の数のビルドステップを追加できます。

    次のスニペットには、ビルド構成ファイルに対する 2 つのステップが含まれています。

    • docker ビルドステップ。docker push コマンドを起動して、前のステップのイメージビルドを Container Registry に push します。
    • kubectl ビルドステップ。kubectl set image コマンドを起動して、イメージを Kubernetes Engine クラスタにデプロイします。Compute Engine ゾーンと Kubernetes Engine クラスタを指定する env フィールドが含まれています。

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
        timeout: 500s
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 'gcr.io/my-project/my-image']
      - name: 'gcr.io/cloud-builders/kubectl'
        args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
        env:
        - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
        - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
      
  7. 追加のビルド構成を含めますmachineTypetags などのフィールドを追加すると、ビルドをさらに構成できます。ビルド構成ファイルに含めることができるフィールドの完全なリストについては、ビルド構成の概要をご覧ください。

    次の例では、ビルド用に次のフィールドを追加しています。

    • machineType: ビルドを実行する仮想マシンのサイズを指定します。
    • timeout: ビルドがタイムアウトするまでの時間を指定します。
    • tags: ビルドにアノテーションを付けます。

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
        timeout: 500s
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 'gcr.io/my-project/my-image']
      - name: 'gcr.io/cloud-builders/kubectl'
        args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
        env:
        - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
        - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
      options:
          machineType: 'N1_HIGHCPU_8'
      timeout: 660s
      tags: ['mytag1', 'mytag2']
      
  8. ビルドされたイメージとアーティファクトを保存します。ビルドでコンテナ イメージが生成された場合は、それらを Container Registry に保存することもできます。これは images フィールドを使用することで実施できます。

    次の例では、docker ステップでビルドされたイメージを Container Registry に保存します。

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      timeout: 500s
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'gcr.io/my-project/my-image']
    - name: 'gcr.io/cloud-builders/kubectl'
      args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
      env:
      - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
      - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
    options:
        machineType: 'N1_HIGHCPU_8'
    timeout: 660s
    tags: ['mytag1', 'mytag2']
    images: ['gcr.io/my-project/myimage']
    

    ビルドでコンテナ以外のアーティファクトが生成された場合は、artifacts フィールドを使用すると Cloud Storage に保存できます。この手順については、イメージとアーティファクトの保存をご覧ください。

JSON

  1. ビルド構成ファイルを作成します。プロジェクトのルート ディレクトリに、cloudbuild.json という名前のファイルを作成します。これが、Cloud Build のビルド構成ファイルです。

  2. ステップ フィールドを追加します。構成ファイルの steps セクションには、Cloud Build で実行するビルドステップが含まれています。

    {
        "steps:" [
        {
        }
        ]
    }
    
  3. 最初のステップを追加します。steps: で、name フィールドを追加して、タスクを実行するコンテナ イメージを指すように指定します。Cloud Build とそのデベロッパー コミュニティでは、一般的なツールと言語がインストールされたコンテナ イメージが複数提供されています。このようなイメージ(クラウド ビルダーとも呼ばれます)のいずれか、または一般公開されているイメージをビルドステップで使用できます。ビルドステップで使用できるさまざまなタイプのコンテナ イメージについては、クラウド ビルダーをご覧ください。

    次のスニペットは、docker ビルダー gcr.io/cloud-builders/docker を含むビルドステップを示しています。これは、Docker を実行するコンテナ イメージです。

    {
        "steps": [
        {
            "name": "gcr.io/cloud-builders/docker"
        }
        ]
    }
    
  4. ステップの引数を追加します。ステップの args フィールドは引数のリストを受け取り、name フィールドで参照されるビルダーに渡します。

    次の例では、docker build コマンドを呼び出すための引数を受け取り、docker ビルダーに渡します。引数は次のとおりです。

    • コマンド名(build
    • Docker タグ(t
    • ビルドされるイメージの名前(gcr.io/my-project/my-image
    • ソースコードの場所(「.」はソースコードが現在の作業ディレクトリに存在することを意味します)。

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ]
          }
          ]
      }
      
  5. ステップの追加フィールドを含めます。環境変数や作業ディレクトリなどのビルドステップにフィールドを追加すると、ビルドステップを構成できます。ビルドステップに含めることができるすべてのフィールドについては、ビルドステップをご覧ください。

    次の例では、500 秒後に docker ステップがタイムアウトする必要があることを指定する timeout フィールドが含まれています。

    {
        "steps": [
        {
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/my-project/my-image",
                "."
            ],
            "timeout": "500s"
        }
        ]
    }
    
  6. ステップを追加します。name フィールドを追加してクラウド ビルダーを指すように指定すると、ビルド構成ファイルに任意の数のビルドステップを追加できます。

    次のスニペットには、ビルド構成ファイルに対する 2 つのステップが含まれています。

    • docker ビルドステップ。docker push コマンドを起動して、前のステップのイメージビルドを Container Registry に push します。
    • kubectl ビルドステップ。kubectl set image コマンドを起動して、イメージを Kubernetes Engine クラスタにデプロイします。Compute Engine ゾーンと Kubernetes Engine クラスタを指定する env フィールドが含まれています。

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ],
              "timeout": "500s"
          },
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "push",
                  "gcr.io/my-project/my-image",
              ],
          },
          {
              "name": "gcr.io/cloud-builders/kubectl",
              "args": [
                  "set",
                  "image",
                  "deployment/my-deployment",
                  "my-container=gcr.io/my-project/my-image"
              ],
              "env": [
                  "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                  "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
              ]
          }
          ]
      }
      
  7. 追加のビルド構成を含めますmachineTypetags などのフィールドを追加すると、ビルドをさらに構成できます。ビルド構成ファイルに含めることができるフィールドの完全なリストについては、ビルド構成の概要をご覧ください。

    次の例では、ビルド用に次のフィールドを追加しています。

    • machineType: ビルドを実行する仮想マシンのサイズを指定します。
    • timeout: ビルドがタイムアウトするまでの時間を指定します。
    • tags: ビルドにアノテーションを付けます。

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ],
              "timeout": "500s"
          },
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "push",
                  "gcr.io/my-project/my-image",
              ],
          },
          {
              "name": "gcr.io/cloud-builders/kubectl",
              "args": [
                  "set",
                  "image",
                  "deployment/my-deployment",
                  "my-container=gcr.io/my-project/my-image"
              ],
              "env": [
                  "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                  "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
              ]
          }
          ],
          "options": {
              "machineType": "N1_HIGHCPU_8"
          },
          "timeout": "660s",
          "tags": [
              "mytag1",
              "mytag2"
          ]
      }
      
  8. ビルドされたイメージとアーティファクトを保存します。ビルドでコンテナ イメージが生成された場合は、それらを Container Registry に保存することもできます。これは images フィールドを使用することで実施できます。

    次の例では、docker ステップでビルドされたイメージを Container Registry に保存します。

    {
        "steps": [
        {
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/my-project/my-image",
                "."
            ],
            "timeout": "500s"
        },
        {
                "name": "gcr.io/cloud-builders/docker",
                "args": [
                    "push",
                    "gcr.io/my-project/my-image",
                ],
        },
        {
            "name": "gcr.io/cloud-builders/kubectl",
            "args": [
                "set",
                "image",
                "deployment/my-deployment",
                "my-container=gcr.io/my-project/my-image"
            ],
            "env": [
                "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
            ]
        }
        ],
        "options": {
            "machineType": "N1_HIGHCPU_8"
        },
        "timeout": "660s",
        "tags": [
            "mytag1",
            "mytag2"
        ],
        "images": [
            "gcr.io/my-project/myimage"
        ]
    }
    

    ビルドでコンテナ以外のアーティファクトが生成された場合は、artifacts フィールドを使用すると Cloud Storage に保存できます。この手順については、イメージとアーティファクトの保存をご覧ください。

次のステップ

フィードバックを送信...