Cloud Build との統合

このページでは、ビルドされたアーティファクトを Artifact Registry リポジトリに格納するよう Cloud Build を構成する方法について説明します。

始める前に

  1. ターゲット リポジトリが存在しない場合は、新しいリポジトリを作成します
  2. デフォルトでは Cloud Build サービス アカウントには、同じプロジェクトのリポジトリからアップロードとダウンロードする権限が付与されます。Cloud Build がご使用中のリポジトリではなく異なるプロジェクト内にある場合、リポジトリを持つそのプロジェクトの Cloud Build サービス アカウントに権限を付与する必要があります。

Docker ビルドを構成する

ターゲット リポジトリに対する権限を付与したら、認証してリポジトリにパッケージを push する Docker を構成します。Cloud Build サービス アカウントを使用した統合をおすすめします。

Docker を構成するには、次の手順を行います。

  1. Docker の認証を設定します。

  2. ビルド構成ファイルに、イメージをビルドして push するステップを追加します。

    次の例では、ビルド構成ファイルと同じディレクトリにあるイメージに対して次の値を使用します。

    • リポジトリのロケーション us-central1
    • ビルドのプロジェクト ID。デフォルトの置換 $PROJECT_ID で解決されます。
    • リポジトリ名 my-repo
    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', 'us-central1-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}', '.' ]
    images:
    - 'us-central1-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}'
    

    変数 ${_REPOSITORY}${_IMAGE} は、リポジトリ名とリポジトリ内のイメージ名に使用されます。これにより、ビルド時にカスタム Cloud Build 置換を使用して、ビルド時に置換できるようになります。

    このアプローチは、同じビルド構成ファイルを使用して、テスト、ステージング、本番環境などのさまざまな環境のリポジトリにイメージを push する場合に便利です。

    たとえば、このコマンドはリポジトリ名を my-repo に、イメージ名を my-image に置き換えます。

    gcloud builds submit --config=cloudbuild.yaml \
      --substitutions=_REPOSITORY="my-repo",_IMAGE="my-image" .
    

Maven ビルドを構成する

ターゲット リポジトリに対する権限を付与すると、パッケージを認証してリポジトリに push するように Maven を構成する準備が整います。Cloud Build サービス アカウントを使用した統合をおすすめします。

Maven を構成するには、次の手順を行います。

  1. Maven の認証を設定します。pom.xml ファイルには、正しいターゲット プロジェクトとリポジトリを確実に指定してください。

  2. Cloud Build のビルド構成ファイルに、Maven を使用してパッケージをアップロードする手順を追加します。

    steps:
    - name: gcr.io/cloud-builders/mvn
      args: ['deploy']
    

npm ビルドを構成する

ターゲット リポジトリに対する権限を付与すると、npm を構成してパッケージをリポジトリに push する準備が整います。Cloud Build サービス アカウントを使用した統合をおすすめします。

npm を構成するには、次の手順を行います。

  1. npm の認証を設定します。.npmrc ファイルには、正しいターゲット プロジェクトとリポジトリを確実に指定してください。

  2. .npmrc ファイルを Cloud Build ビルド構成ファイルと同じディレクトリに配置して、Cloud Build が認証設定を検出できるようにします。

  3. ビルド構成ファイルに、パッケージをリポジトリにアップロードするステップを追加します。

    steps:
    - name: gcr.io/cloud-builders/npm
      args: ['publish', ${_PACKAGE}]
    

    変数 ${_PACKAGE} はパッケージを表します。このカスタム Cloud Build の置換はビルド時に、package.json やパッケージで使用される他のファイルを含むパッケージ、フォルダ、または gzip 圧縮された TAR 書庫に置き換えます。

    たとえば、このコマンドは、.npmrc ファイルとビルド構成ファイルがあるディレクトリと同じディレクトリにある src というパッケージをアップロードします。

    gcloud builds submit --config=cloudbuild.yaml --substitutions=_PACKAGE="src" .