0

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

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

当我在开发过程中对函数进行更新时,我会使用 CLI 将更新推送到我的 Source Repository。但是,从命令行运行gcloud functions deploy ...命令似乎不会强制GCF 获取最新的源代码。

有时,deploy推送新源代码后的命令会简单地声明“Nothing to update”。(这是不正确的。)

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

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

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

4

1 回答 1

4

我认为您正在寻找gcloud functions deploy选项以指向源存储库而不是当前目录(默认):--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}

通过使用上面的 URL,将使用来自版本库根目录的源代码master

如果要从不同于 的修订版进行部署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>.*))?)?$

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

  https://source.developers.google.com/projects/123456789/repos/testrepo/
  moveable-aliases/alternate-branch/paths/path-to=source
于 2020-02-02T06:46:06.153 回答