モノレポ内の複数の cloudbuild.yaml を使用した GitHub Cloud Build の統合 質問する

モノレポ内の複数の cloudbuild.yaml を使用した GitHub Cloud Build の統合 質問する

GitHubのGoogle Cloud Build 統合cloudbuild.yamlまたはがDockerfileリポジトリのルートにない場合は検出されません。

複数の を含むモノレポジトリを使用する場合cloudbuild.yamls、正しい を検出するように GitHub の Google Cloud Build 統合を構成するにはどうすればよいでしょうかcloudbuild.yaml?

ファイルパス:

services/api/cloudbuild.yaml
services/nginx/cloudbuild.yaml
services/websocket/cloudbuild.yaml

Cloud Build 統合出力:

ビルド失敗

ベストアンサー1

cloudbuild.yamlリポジトリのルートに を 1 つの手順で追加するだけで、これを実行できますgcr.io/cloud-builders/gcloud。この手順では次の操作を行います。

  1. 各サブディレクトリを走査するか、追加のファイルfindを見つけるために使用します。cloudbuild.yaml
  2. 見つかった各 についてcloudbuild.yaml、 を実行してビルドをフォークして送信しますgcloud builds submit
  3. フォークされたすべてのコマンドが完了するまで待ちますgcloud

これを実現する良い例がその根cloudbuild.yaml内でレポGoogleCloudPlatform/cloud-builders-community

重要でない部分を取り除くと、基本的には次のようになります。

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
    for d in */; do
      config="${d}cloudbuild.yaml"
      if [[ ! -f "${config}" ]]; then
        continue
      fi

      echo "Building $d ... "
      (
        gcloud builds submit $d --config=${config}
      ) &
    done
    wait

おすすめ記事