如何使用Cloud Build从单回购部署多个功能,但一次只能部署一个



我正试图用Python编写的多个云函数来建立一个monoreo。我目前正在使用云构建和类似的结构:

.
├── deployment
│   └── cloudbuild.yaml
├── main.py
└── requirements.txt

这个云构建YAML代码部署得很好:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: [
'functions', 'deploy', '$_FUNCTION_NAME',
'--trigger-resource', '$_TRIGGER_RESOURCE',
'--trigger-event', '$_TRIGGER_EVENT',
'--runtime', 'python37',
'--memory', '1024MB',
'--region', 'europe-west1'
]

现在我的意图是朝着这个结构前进:

.
├── first_function
│   ├── main.py
│   └── requirements.txt
├── second_function
│   ├── main.py
│   └── requirements.txt
└── cloudbuild.yaml

设置触发器以监视相应子文件夹中的更改,将函数名作为env变量注入并部署正确的函数。这就是TF的设置理念:

resource "google_cloudbuild_trigger" "first_function_trigger" {
project = google_project.my_project.name
name = "trigger-first-function"
description = "Trigger for deploying first function"
trigger_template {
repo_name = google_sourcerepo_repository.functions.name
branch_name = "master"
dir = "first_function/**"
}
substitutions = {
_TRIGGER_RESOURCE = google_storage_bucket.my_bucket.name
_TRIGGER_EVENT = "google.storage.object.finalize"
_FUNCTION_NAME = "first_function"
}
filename = "cloudbuild.yaml"
}

然而,问题是:

所有的安排,在gcloud functions deploy命令中指定--source,只会不断给我错误,例如:

错误:(gcloud.functions.deploy(参数--source:提供的目录不存在

当我尝试以下值时会发生此错误:

1. --source=.
2. --source=./first_function
3. --source=./first_function/

当从根文件夹调用gcloud functions deploy时,数字3在本地工作。我读过在GCP中指定存储库的方法,但这是一个额外的数据加载操作,不是吗?源代码已经存在——这是存储库中更改的触发因素。

当没有定义--source时,这就是我得到的错误:

错误:(gcloud.functions.deploy(操作错误:代码=3,消息=构建失败:构建错误详细信息不可用

我知道云构建是一项相当年轻的服务,变化非常快,但现在有没有办法安排文件夹或设置云构建YAML,以便正确部署功能?我真的不想为每一个100行的函数创建一个单独的存储库。

我无法用云功能+云构建来重现您的问题。具有以下结构:

.
├── cloudbuild.yaml
├── first_function
│   ├── main.py
│   └── requirements.txt
└── second_function
├── main.py
└── requirements.txt

以及以下cloudbuild.yaml:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: [
'functions', 'deploy', 'first_function',
'--trigger-http',
'--runtime', 'python37',
'--region', 'us-central1',
'--source', 'first_function'
]
- name: 'gcr.io/cloud-builders/gcloud'
args: [
'functions', 'deploy', 'second_function',
'--trigger-http',
'--runtime', 'python37',
'--region', 'us-central1',
'--source', 'second_function'
]

我能够同时部署这两个功能。

是否可能source标志设置不正确?

相关内容

  • 没有找到相关文章

最新更新