温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Redeploy Google Cloud Function from command line using Source Repositories
gcloud google-cloud-functions google-cloud-platform google-cloud-source-repos

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

发布于 2020-04-11 13:25:24

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

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

在开发过程中对功能进行更新时,我使用CLI将更新推送到源存储库。但是,gcloud functions deploy ...从命令行运行命令似乎并不强制 GCF提取最新的源代码。

有时,deploy推送新源代码后命令将仅声明“无更新”。(这是不正确的。)

多数情况下,它将经历部署过程,但该功能仍将运行以前版本的代码。

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

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

查看更多

提问者
Rob E.
被浏览
15
Dan Cornilescu 2020-02-02 14:46

我认为您正在寻找gcloud函数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