ビルド リクエスト

Google Cloud Build API の基本的なエンティティはビルド リクエストです。ビルド リクエストとは Cloud Build が Docker コンテナ イメージを作成するために必要な指示が盛り込まれた JSON ドキュメントのことです。ビルド リクエストは API の Build リソースを使用してモデル化されています。新しいビルドを開始するときは、projects.builds.create メソッドを使用して Cloud Build にビルド リクエストを送信します。

目次

ビルド リクエストには、次の情報が含まれています。

  • Google Cloud StorageGoogle Cloud Source Repositories にあるアプリケーション ソースのロケーション。
  • コンテナ イメージをビルドするために Cloud Build が実行しなければならないアクションを指定する、1 個以上のビルドステップ。
  • 必要に応じて、ビルドステップの後には 1 個以上のコンテナ イメージ名が作成されます。指定されたイメージがビルド時に生成されない場合、ビルドは失敗です。ビルド完了時に、指定したイメージだけが Google Container Registry に push されます。イメージが指定されていない場合、リクエストはすべてのビルドステップが成功すると完了しますが、イメージは push されません。

ソースの場所

Build リソースの source フィールドは、Google Cloud Storage または Google Cloud Source Repository のいずれかにあるアプリケーション ソースコードのロケーションを指定します。

ソースが指定されると、Cloud Build がビルドプロセス中にビルドステップに関連付けられた Docker コンテナの /workspace ディレクトリにソースをマウントします。

Google Cloud Storage 上のソース

storageSource フィールドを設定して Google Cloud Storage 上のソースを指定します。このメッセージは、ソースが含まれているバケットとオブジェクトを指定します。

Google Cloud Storage 上のソースを指定すると、オブジェクトは .tar.gz.zip アーカイブで圧縮されます。

Google Cloud Source レポジトリ内のサービス

repoSource フィールドを設定して Google Cloud Source レポジトリのソースを指定します。このメッセージは、ソースが含まれているレポジトリだけでなく、ビルドのブランチ、タグ、commit SHA を指定します。

branchNametagNamecommitSha のいずれかを指定する必要があります。branchName は Git ブランチを指定します。tagName は Git タグを指定します。 commitSha は特定の commit を指定します。

ビルドステップ

Build リソースの steps フィールドは Cloud Build がソースコードからコンテナ イメージをビルドするために完了させなければならないビルドステップを 1 個以上指定します。複数のビルドステップを指定した場合、1 個のステップによって生成されたアセットは、/workspace ディレクトリを維持したまま次のものに渡されます。これにより、最後のコンテナビルドとなるビルドステップのパイプラインを設定できます。

ビルドステップの詳細については、詳細なドキュメントをご覧ください。

生成されるイメージ

Build リソースの images フィールドは、ビルドプロセス中に作成されるコンテナ イメージの名前を 1 個以上指定します。指定されたイメージがビルド時に生成されない場合、ビルドは失敗です。

置換

ビルド リクエスト内で置換を使用できます。置換はランタイムまで値が不明な変数を設定する場合や(組み込み置換)、既存のビルド リクエストを別の変数値と一緒に再使用する場合に役立ちます。

ビルドの steps フィールドと images フィールド内で置換を作成できます。置換マップを Build リクエストの一部として渡す必要があります。

組み込み置換は次のとおりです。

  • $PROJECT_ID: build.ProjectId
  • $REPO_NAME: build.Source.RepoSource.RepoName
  • $BRANCH_NAME: build.Source.RepoSource.Revision.BranchName
  • $TAG_NAME: build.Source.RepoSource.Revision.TagName
  • $REVISION_ID: build.SourceProvenance.ResolvedRepoSource.Revision.CommitSha

組み込み置換が利用できない場合は(ソースがないビルドや、ストレージ ソースを使用しているビルドなど)、置換されなかった不明な変数が空の文字列に置き換えられます。

独自の置換を定義することもできます。定義する置換は次のルールに従う必要があります。

  • 作成する置換はアンダースコアで始まり、すべて大文字にする必要があります(正規表現 _[A-Z0-9_]+ に従う)こうすると、定義した置換が組み込み置換と競合しなくなります。
  • テンプレート内に一致しないキーがあると、エラーになります(cloudbuild ファイルに $_FOO が含まれていて、置換マップで _FOO が定義されていない場合など)。
  • パラメータ内に一致しないキーがあると、エラーになります(置換マップで _FOO が定義されているにもかかわらず、cloudbuild ファイルに $_FOO が含まれていない場合)。
  • テンプレートにリテラル $_VARIABLE を含めるには、$$ でエスケープする必要があります。
  • ${_VAR} 構文を使用して変数の展開を明示的に指定することができます。こうすると、$_FOO が変数である ${_FOO}BAR のような曖昧さがなくなります。
  • パラメータの数、パラメータキーの長さ、パラメータ値の長さは 100 に制限されています。

ビルド リクエストは次の例のとおりです。

{
  "source": {
    "storageSource": {
      "bucket": "cloud-build-examples",
      "object": "node-docker-example.tar.gz"
    }
  },
  "steps": [
    {
      "name": "gcr.io/cloud-builders/docker",
      "args": [
        "build", "-t", "gcr.io/$PROJECT_ID/cb-demo-img", "."
      ]
    }
  ],
  "images": [
    "gcr.io/$PROJECT_ID/cb-demo-img"
  ]
}

この例では、source フィールドはアプリケーション ソースコードの場所を gs://cloud-build-examples/node-docker-example.tar.gz と指定しています。ビルド リクエストは単一のビルドステップで、dockergcr.io/cloud-builders ビルダー イメージを使用してコンテナをビルドします。ステップ内の args フィールドは、docker コマンドに渡す引数を指定します。この場合は、docker build -t gcr.io/my-project/cb-demo-img が呼び出されます($PROJECT_ID がプロジェクト ID に置換された後)。images フィールドには、このイメージの名前が含まれています。イメージがビルドによって正常に作成されていない場合、ビルドは失敗です。

Docker バージョン

2017 年 5 月 17 日時点で、Cloud Build は Docker エンジン バージョン 17.05 を実行しています。

このページは役立ちましたか?評価をお願いいたします。

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

Cloud Build のドキュメント