【问题标题】:Google Cloud Functions and CI/CD谷歌云函数和 CI/CD
【发布时间】:2017-04-05 06:11:29
【问题描述】:

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

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

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

如果每个函数使用 1 个 repo,这也应该很容易做到。然而,在任何不平凡的应用程序中,我们都可以期望有数百个函数,这将使每个函数的 repo 方法非常繁琐。

repo per function 方法的另一个问题是不可能使用任何共享逻辑(例如 JWT 或 CORS)。

另一个选项是使用 1 个 repo 和所有函数,然后使用 --source-path 选项指定要部署的函数,但这也使得无法使用共享代码,因为 GCF 将该路径检查为root 并且不能导入更高层次的代码。此外,所有方法的 1 个 repo 将使推送部署变得异常困难。

如何建立这样的 GCF 项目?

【问题讨论】:

  • 不是基于意见吗?
  • @SagarV 需要详细说明吗?
  • 在每个函数的 repo 案例中,您打算如何解决代码共享问题?
  • AFAIK 你能做到这一点的唯一方法是创建 npm 模块并导入它们:(

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


【解决方案1】:

无服务器框架有一些很好的实用程序可以部署您的全部或部分功能。

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

希望这会有所帮助,对于这类工作流程来说,这绝对是早期阶段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 2019-02-15
    • 2018-12-07
    • 2018-10-02
    • 2021-01-22
    • 1970-01-01
    相关资源
    最近更新 更多