Google Cloud Functions和CI / CD

时间:2017-04-05 06:11:29

标签: google-cloud-platform google-cloud-functions

我们正在考虑将GCF用于我们即将开展的项目之一,但最后还有一件似乎没有任何文献。

所有示例和教程都非常重视手动部署您的功能(使用gcloud命令)。但是,我们希望将我们的功能集成到CI / CD工作流程中。

CI部分是微不足道的,所以我们的问题是如何从CD的角度来构建项目。理想情况下,您希望在推送时部署您的功能(例如,主分支到生产,开发分支到开发环境等)。

如果每个功能使用1个repo,这也应该很容易。但是,在任何非平凡的应用程序中,我们都可以期望拥有数百个函数,这会使每个函数的repo变得非常繁琐。

每个函数repo的另一个问题是不可能使用任何共享逻辑(例如,想想JWT或CORS)。

另一个选择是使用1个repo,包含所有函数,然后使用--source-path选项指定要部署的函数,但是这也使得无法使用共享代码,因为GCF检查了path作为根,无法导入层次结构中较高的代码。此外,所有方法的1个回购将使得难以进行推送部署。

如何设置这样的GCF项目?

1 个答案:

答案 0 :(得分:2)

无服务器框架在部署所有或部分功能方面有一些很好的实用程序。

https://serverless.com/framework/docs/providers/aws/guide/deploying/

我还没有使用Google Cloud Functions插件,但看起来不错。

https://github.com/serverless/serverless-google-cloudfunctions

当涉及在子目录中部署单个函数时 - 只有它们已经改变了......你将不得不使用一点点bash foo。

您可以根据git分支设置gcloud项目,然后循环遍历自某个标记等以来已更改的每个目录。

git diff --name-only HEAD 878850 | sed 's/\(.*\)\/.*/\1/' | uniq | while read line ; do cd $line && gcloud beta functions deploy ; done

希望这有点帮助,这对于这类工作流程来说肯定是早期的。