Go アプリケーションのビルド

このページでは、Cloud Build を使用して Go バイナリをビルドし、Cloud Storage に push する方法について説明します。Cloud Build を初めて使用する場合は、最初にクイックスタートビルド構成の概要をご覧ください。

Cloud Build を使用すると、一般公開されているコンテナ イメージを使用してタスクを実行できます。構成ファイルで DockerHub にある一般公開の golang イメージを使用して Go アプリケーションをビルドできます。

始める前に

このページの説明は、Go の知識があることを前提としています。また、次の準備が必要です。

  • Go アプリケーションのソースコードが必要です。
  • ビルドされた Go バイナリを push する Cloud Storage バケットが必要です。バケットの作成手順については、ストレージ バケットの作成をご覧ください。
  • このページで gcloud コマンドを実行するには、gcloud コマンドライン ツールをインストールします。

Go モジュールでビルドする

Go 1.11 には、バージョニングされたモジュールの予備サポートが含まれています。 Docker Hub にある一般公開の golang イメージは、Go モジュールを使用したビルドの作成に対応しています。このイメージを Cloud Build 構成ファイルのビルドステップとして使用すると、イメージ内で go コマンドを呼び出すことができます。このビルドステップに渡された引数が golang ツールに直接渡されるため、このイメージで任意の go コマンドを実行できます。

Go アプリケーションをビルドするには:

  1. (Go モジュールを使用しない場合は省略可)Go モジュールを初期化する: アプリケーションのソースコードが格納されているのと同じディレクトリで、次のコマンドを実行して GOPATH を指定し、Go モジュールの使用を有効にします。

    go mod init [GOPATH]
    
  2. Cloud Build 構成ファイルを cloudbuild.yaml または cloudbuild.json という名前で作成します。

  3. モジュールをビルドする: 構成ファイルで、go build コマンドを呼び出すビルドステップを追加します。

    YAML

    # Build the module.
    steps:
    - name: golang
      args: ['go', 'build', '.']
    

    JSON

    {
       "steps": [
        {
           "name": "golang",
           "args": [
               "go",
               "build",
               "."
            ]
           }
      ]
    }
    
  4. ビルド アーティファクトを保存する: Cloud Storage バケットにバイナリを格納するため、artifacts フィールドを追加します。

    YAML

    # Build the module.
    steps:
    - name: golang
      args: ['go', 'build', '.']
    artifacts:
      objects:
        location: '[STORAGE_LOCATION]'
        paths: ['[ARTIFACT_PATH]']
    

    JSON

    {
       "steps": [
        {
           "name": "golang",
           "args": [
               "go",
               "build",
               "."
            ]
        }
      ]
      "artifacts": {
        "objects": {
            "location": [
                "[STORAGE_LOCATION]"
            ],
            "paths":
            [
                "[ARTIFACT_PATH]"
    
            ]
        }
      }
    }
    

    ここで

    • [STORAGE_LOCATION]: Cloud Build がアーティファクトを保存する必要のある、Cloud Storage バケットまたはバケット内のフォルダ(gs://mybucketgs://mybucket/some/folder など)。
    • [ARTIFACT_PATH]: 1 つ以上のアーティファクトへのパス。
  5. ビルド構成ファイルを使用してビルドを開始します。

    gcloud builds submit --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]
    

    ここで

    • [CONFIG_FILE_PATH] は、ビルド構成ファイルへのパスです。
    • [SOURCE_DIRECTORY] は、ソースコードのパスまたは URL です。

    gcloud builds submit コマンドに [CONFIG_FILE_PATH][SOURCE_DIRECTORY] を指定しないと、Cloud Build は、構成ファイルとソースコードが現在の作業ディレクトリにあることを前提とします。

次のステップ