Go のクイックスタート

このページでは、Cloud Build を使用して Go バイナリをビルドし、そのバイナリを Google Cloud Storage に push する方法について説明します。ビルド構成ファイルを作成し、そのファイルに Cloud Build の命令を追加します。その構成ファイルを使用してビルドを開始します。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. GCP Console で [リソースの管理] ページに移動し、既存のプロジェクトを選択するか、新しいプロジェクトを作成します。

    [リソースの管理] ページに移動

  3. Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。

    課金を有効にする方法について

  4. Cloud Build API を有効にします。

    APIを有効にする

  5. Cloud SDK をインストールして初期化します。

Google Cloud へのログイン

  1. gcloud コマンドライン ツールにプロジェクトへのアクセスを許可します。

    gcloud auth login
    
  2. gcloud ツールのプロジェクトを構成します。[PROJECT_ID] は、前のセクションで作成または選択した GCP プロジェクト ID です。

    gcloud config set project [PROJECT_ID]
    

ソースファイルの準備

ビルドするサンプル ソースコードが必要です。このセクションでは、簡単な Hello World のサンプルを Go で作成します。

  1. 次の内容のファイルを、main.go という名前で作成します。

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        fmt.Println("Hello, world!")
    }
    

Cloud Storage バケットの作成

ビルド後に Go バイナリを push するには、Google Cloud Storage バケットが必要です。このセクションでは、Cloud Storage バケットを作成します。

  1. ターミナル ウィンドウを開きます。

  2. gsutil mb コマンドと一意の名前を使用してバケットを作成します。

    gsutil mb gs://[BUCKET_NAME]/
    

    [BUCKET_NAME] は、グローバルに一意である自分のバケット名です。

    成功した場合、次の内容が返されます。

    Creating gs://[BUCKET_NAME]/...
    

    バケットが作成されたので、データを保存できます。

    バケット名がすでに(自分または他のユーザーにより)使用されている場合は、コマンドから次のメッセージが返されます。

    Creating gs://[BUCKET_NAME]/...
    ServiceException: 409 Bucket [BUCKET_NAME] already exists.
    

    異なるバケット名でもう一度お試しください。

ビルドを構成する

Cloud Build で実行するアクションをビルド構成ファイル内に指定します。それらのアクションはビルドステップとして指定されます。ビルドステップでは、タスクを実行するためにビルダーが使用されます。ビルダーは、一般的な言語とツールがインストールされているコンテナ イメージです。Cloud Build には、Google が管理する一連のビルダーが用意されています。このセクションでは、これらのビルダーを使用して Go バイナリをビルドし、Google Cloud Storage に保存します。

  • main.go と同じディレクトリに、以下の内容のファイルを cloudbuild.yaml という名前で作成します。このファイルがビルド構成ファイルです。ビルド時に、Cloud Build は $PROJECT_ID を実際のプロジェクト ID に自動的に置き換えます。

    steps:
    - name: 'gcr.io/cloud-builders/go'
      args: ['install', '.']
      env: ['PROJECT_ROOT=hello']
    - name: 'gcr.io/cloud-builders/go'
      args: ['build', 'hello']
      env: ['PROJECT_ROOT=hello']
    artifacts:
      objects:
        location: 'gs://[BUCKET_NAME]/'
        paths: ['hello']
    

    上記の構成ファイルには 2 つのビルドステップが含まれています。ビルドステップの name は、タスクを実行するために使用するビルダーを参照するものです。args フィールドでは引数のリストを指定します。引数はビルダーに渡されます。env フィールドでは、ステップを実行する際に使用される環境変数を指定します。上記の例では、ルート プロジェクトが指定されています。この構成ファイルでは次のようになります。

    • 最初のビルドステップでは、go ビルダーを呼び出して依存関係をインストールします。
    • 2 番目のビルドステップでは、go ビルダーを呼び出してバイナリをビルドします。
    • artifacts フィールドは、バイナリを Cloud Storage バケットに保存するために使用されます。

ビルドを開始する

  • gcloud builds submit コマンドを実行することによってビルドを開始します。

    gcloud builds submit --config cloudbuild.yaml .
    

    ビルドが完了すると、次のような出力が表示されます。

    PUSH
    DONE
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    ID                                    CREATE_TIME                DURATION  SOURCE                                                                                  IMAGES  STATUS
    $BUILD_ID                             2018-01-25T15:36:40+00:00  10S       gs://[PROJECT_ID]_cloudbuild/source/1516894599.15-25da391996554cdf81fb7786f914d7f1.tgz  -       SUCCESS
    

    ビルド構成ファイルを使用して Go バイナリをビルドし、そのバイナリを Cloud Storage バケットに保存しました。

ビルドの詳細の表示

  1. Google Cloud Platform Console で [Cloud Build] ページを開きます。

    [Cloud Build] ページを開く

  2. プロジェクトを選択し、[開く] をクリックします。

    [ビルド履歴] ページが表示されます。

    ビルド履歴ページのスクリーンショット

  3. ビルドをクリックします。

    次のスクリーンショットに示されているような [ビルドの詳細] ページが表示されます。

    ビルド詳細ページのスクリーンショット

クリーンアップ

このチュートリアルで使用したリソースについて GCP アカウントに課金されないようにする手順は次のとおりです。

  1. ターミナル ウィンドウを開きます(まだ開いていない場合)。

  2. gsutil rm command-r フラグを使用して、バケットとその内容を削除します。[BUCKET_NAME] は実際のバケット名に置き換えます。

    gsutil rm -r gs://[BUCKET_NAME]
    

    コマンドが正常終了した場合は、次のようなメッセージが返されます。

    Removing gs://[BUCKET_NAME]/just-a-folder/cloud-storage.logo.png#1456530077282000...
    Removing gs://[BUCKET_NAME]/...
    

    このクイックスタートで作成したアーティファクトがプロジェクトから削除されます。

これでクイックスタートの演習はすべて終了です。

次のステップ

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