如果GitHub的Google Cloud Build integration不在存储库的根目录中,则不会检测到cloudbuild.yamlDockerfile

使用包含多个cloudbuild.yamls的monorepo时,如何配置GitHub的Google Cloud Build集成以检测正确的cloudbuild.yaml

文件路径:

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


Cloud Build集成输出:

google-cloud-platform - GitHub Cloud Build Integration与Monorepo中的多个cloudbuild.yamls-LMLPHP

最佳答案

您可以通过一个单一的cloudbuild.yaml步骤在存储库的根目录中添加一个gcr.io/cloud-builders/gcloud来完成此操作。此步骤应:


遍历每个子目录或使用find查找其他cloudbuild.yaml文件。
对于每个找到的cloudbuild.yaml,通过运行gcloud builds submit进行分叉并提交构建。
等待所有分叉的gcloud命令完成。


the root cloudbuild.yaml中的the GoogleCloudPlatform/cloud-builders-community repo中有一个很好的方法示例。

如果我们剔除不必要的部分,基本上您将得到以下内容:

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

关于google-cloud-platform - GitHub Cloud Build Integration与Monorepo中的多个cloudbuild.yamls,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51861870/

10-10 23:49