ビルド依存関係を管理する

このページでは、ビルドの依存関係を指定する方法について説明します。Cloud Build を使用すると、ソースコードの依存関係をビルドプロセスとは別に管理できます。

ビルド構成ファイルで、ビルド用にクローンする 1 つ以上のリポジトリと、それらを取得する順序を指定できます。このように依存関係を指定すると、依存関係の取得がビルドプロセス自体から分離されます。

ビルド構成ファイルに依存関係を含めない場合、Cloud Build は、ビルド構成ファイルを含むソースコード リポジトリ(トリガーされたビルドの場合)またはソースコードを含むリポジトリ(コマンドラインから呼び出すビルドの場合)のクローンを作成します。ビルド構成ファイルに依存関係を含めると、Cloud Build は dependencies フィールドで指定されたリポジトリのみをクローンします。

依存関係は、指定した順序でクローンされます。また、依存関係の取得は、ユーザーが指定したロジックが実行される前に行われます。したがって、依存関係の取得は信頼されています。

依存関係は、[ビルドの詳細] ページの [ビルドの依存関係] タブに表示されます。

始める前に

このページの手順は、次の 2 種類のリポジトリのいずれか 1 つ以上があることを前提としています。

  • パブリック リポジトリまたは Developer Connect を使用して Cloud Build にリンクされている Git リポジトリ。

  • 汎用リポジトリ

Developer Connect リポジトリを依存関係として追加するために必要な権限を に付与するには、サービス アカウントに対する Developer Connect 読み取りトークン アクセサー(developerconnect.readTokenAccessor)IAM ロールを に付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

管理者は、カスタムロールや他の事前定義ロールを使用して、必要な権限を付与することもできます。

依存関係を指定する

依存関係は、ビルド構成ファイルに dependencies フィールドを追加することで指定します。dependencies はビルド構成の最上位のプロパティですが、ファイル内の任意の場所に配置できます。

GitHub の依存関係を指定する

GitHub リポジトリの依存関係を指定するには、ビルド構成ファイルに次の dependencies 構成を追加します。

YAML

 dependencies:
 - gitSource:
     repository:
       url: 'URL'
       developerConnect: 'DC_RESOURCE_PATH'
     revision: 'REVISION'
     recurseSubmodules: 'true|false'
     depth: 'DEPTH'
     destPath: 'DEST_PATH'

JSON

 {
     "dependencies": {
         "gitSource": {
             "repository": {
                 "url": "URL"
                 "developerConnect": "DC_RESOURCE_PATH"
             },
             "revision": "REVISION",
             "recurseSubmodules": true|false,
             "depth": "DEPTH",
             "destPath": "DEST_PATH",
         },
     },
 }

次の値を置き換えます。

  • URL: フェッチするリポジトリの HTTPS URL。リポジトリが Developer Connect を使用して Cloud Build に接続されている場合を除き、必須です。

  • DC_RESOURCE_PATH: Developer Connect リポジトリの Google Cloud リソースパス。例: projects/my-project/locations/us-central1/connections/my-connection/gitRepositoryLinks/my-repoリポジトリが Developer Connect を使用して Cloud Build に接続されている場合に必要です。

    Developer Connect を使用してリポジトリが接続されている場合は、次のものが必要です。

  • REVISION: 必須。リポジトリから取得するバージョン、コミット ハッシュ、タグ、ブランチ名。

  • recurseSubmodules: 'true|false': サブモジュールを取得するかどうか。

  • DEPTH: 省略可。リポジトリの履歴をどこまで取得するか。指定しない場合、最新の commit が取得されます。

    • 1: 最新の commit
    • 2: 最後の 2 つのコミット
    • 3: 最後の 3 つのコミット
    • -1: すべてのコミット
  • DEST_PATH: 必須。リポジトリのクローンを作成するディレクトリのパス。例: my/repo

    dest_path を設定すると、リポジトリは /workspace/<dest_path> で取得されます。dest_path の値は、ビルドの作業ディレクトリを基準とした相対パスにする必要があります。

汎用アーティファクトを依存関係として指定する

汎用アーティファクトを依存関係として指定するには、ビルド構成ファイルに次の dependencies 構成を追加します。

YAML

dependencies:
- genericArtifact:
    resource: RESOURCE
    destPath: PATH

JSON

{
  "dependencies": [
    {
      "genericArtifact": {
        "resource": "RESOURCE",
        "destPath": "PATH"
      }
    }
  ]
}

ここで

  • RESOURCE は、Artifact Registry の汎用リポジトリ内の汎用アーティファクトの完全なアドレスです。次の形式で指定します。

    projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/packages/PACKAGE/versions/VERSION

    Cloud Build がアーティファクト参照が不変であることを確認できるように、アーティファクトのフィンガープリントをリソース アドレスに含めることを強くおすすめします。フィンガープリントが追加されたパッケージ バージョンの形式は次のとおりです。

    VERSION@dirsum_sha256=HASH_VALUE

    Artifact Registry リポジトリ内のアーティファクトのフィンガープリントを見つけるには、リポジトリ内のパッケージ バージョンのフィンガープリントを取得するをご覧ください。

  • PATH は、Cloud Build がリポジトリからパッケージをダウンロードするフォルダのアドレスです。フォルダがまだ存在しない場合は、Cloud Build によって自動的に作成されます。

次のステップ