我有一个从Cloud Source Repository部署的相当简单的Google Cloud Function。
我使用Google Cloud Shell作为开发机器。
在开发过程中对功能进行更新时,我使用CLI将更新推送到源存储库。但是,gcloud functions deploy ...
从命令行运行命令似乎并不强制 GCF提取最新的源代码。
有时,deploy
推送新源代码后的命令将仅声明“无更新”。(这是不正确的。)
多数情况下,它将经历部署过程,但该功能仍将运行以前版本的代码。
发生这种情况时,我可以更新功能的唯一方法是使用仪表板,“编辑”功能,然后单击“部署”按钮(即使我没有做任何更改。)
我是否忘记进行某种所需的版本控制或标记?有没有办法强制CLI从源存储库中提取最新提交?
我认为您正在寻找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
绝对完美。谢谢!我想我以为它将从第一次部署该功能时就接受设置,但是我看到那是不正确的。