【问题标题】:Redeploy Google Cloud Function from command line using Source Repositories使用 Source Repositories 从命令行重新部署 Google Cloud Function
【发布时间】:2020-05-18 04:10:52
【问题描述】:

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

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

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

有时,推送新源代码后的deploy 命令会简单地声明“没有要更新的内容”。 (这是不正确的。)

更多时候,它会通过部署过程,但该函数仍会运行以前版本的代码。

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

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

【问题讨论】:

    标签: google-cloud-platform google-cloud-functions gcloud google-cloud-source-repos


    【解决方案1】:

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

    --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}.

    如果您想从不同于 root,您必须指定修订版、可移动别名或固定别名, 如上所述,并将/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
    

    【讨论】:

    • 绝对完美。谢谢!我想我认为它会从函数首次部署时开始获取设置,但我知道这是不正确的。
    • ${MOVEABLE_ALIAS} 的格式可以是“feature/xxx-NNN-yyy”吗?我的意思是里面有“/”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 2015-11-11
    • 2017-08-04
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    相关资源
    最近更新 更多