如果GitHub的Google Cloud Build integration不在存储库的根目录中,则不会检测到cloudbuild.yaml
或Dockerfile
。
使用包含多个cloudbuild.yamls
的monorepo时,如何配置GitHub的Google Cloud Build集成以检测正确的cloudbuild.yaml
?
文件路径:
services/api/cloudbuild.yaml
services/nginx/cloudbuild.yaml
services/websocket/cloudbuild.yaml
Cloud Build集成输出:
最佳答案
您可以通过一个单一的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/