使用源存储库从命令行重新部署 Google Cloud Function

Rob*_* E. 0 google-cloud-platform gcloud google-cloud-source-repos google-cloud-functions

我有一个相当简单的 Google Cloud Function,它是从 Cloud Source Repositories 部署的。

我使用 Google Cloud Shell 作为我的开发机器。

当我在开发过程中对函数进行更新时,我使用 CLI 将更新推送到我的源存储库。然而,gcloud functions deploy ...从命令行运行该命令似乎并没有强制GCF 提取最新的源代码。

有时,deploy推送新源代码后的命令只会简单地指出“无需更新”。(这是不正确的。)

更常见的是,它将经历部署过程,但该函数仍将运行以前版本的代码。

发生这种情况时,我可以更新函数的唯一方法是使用仪表板,“编辑”函数,然后单击“部署”按钮(即使我没有更改任何内容。)

我是否忘记进行某种所需的版本控制或标记?有没有办法强制 CLI 从源存储库中提取最新的提交?

Dan*_*scu 5

我认为您正在寻找gcloud 函数部署选项来指向源存储库而不是当前目录(默认):--source=SOURCE

--source=SOURCE

要部署的源代码的位置。源的位置可以是以下三个选项之一:

  • Google Cloud Storage 中的源代码(必须是.zip存档),
  • 参考源存储库或,
  • 本地文件系统路径(函数源的根目录)。

请注意,如果不指定标志--source

  • 当前目录将用于新功能部署。
  • 如果该函数之前是使用本地文件系统路径部署的,则函数的源代码将使用当前目录进行更新。
  • 如果该函数之前是使用 Google Cloud Storage 位置或源存储库部署的,则该函数的源代码将不会更新。

如果该标志的值以gs://.

如果该值以https://.

否则,它将被解释为本地文件系统路径。从本地文件系统部署源时,此命令会跳过.gcloudignore文件中指定的文件(请参阅gcloud topic gcloudignore参考资料 获取更多信息)。如果该.gcloudignore文件不存在,该命令将尝试创建它。

最小源存储库 URL 是: https://source.developers.google.com/projects/${PROJECT}/repos/${REPO}

master通过使用上面的 URL,将使用来自标记修订版的存储库根目录的源。

如果您想从不同于 的修订版进行部署master,请将以下三个源之一附加到 URL:

  • /revisions/${REVISION},
  • /moveable-aliases/${MOVEABLE_ALIAS},
  • /fixed-aliases/${FIXED_ALIAS}

如果您想从根目录以外的目录部署源,则必须指定修订版、可移动别名或固定别名(如上所述),并将其附加/paths/${PATH_TO_SOURCES_DIRECTORY}到 URL。

总的来说,URL 应与以下正则表达式匹配:

  ^https://source\.developers\.google\.com/projects/
  (?<accountId>[^/]+)/repos/(?<repoName>[^/]+)
  (((/revisions/(?<commit>[^/]+))|(/moveable-aliases/(?<branch>[^/]+))|
  (/fixed-aliases/(?<tag>[^/]+)))(/paths/(?<path>.*))?)?$
Run Code Online (Sandbox Code Playgroud)

格式有效的源存储库 URL 的示例是:

  https://source.developers.google.com/projects/123456789/repos/testrepo/
  moveable-aliases/alternate-branch/paths/path-to=source
Run Code Online (Sandbox Code Playgroud)