是否存在用于访问给定已部署云功能的版本号的变量

时间:2018-12-31 21:50:48

标签: node.js google-cloud-platform google-cloud-functions

GCP在控制台中显示已部署的云功能的版本号。目前,没有system environment variable包含有关部署的信息-没有版本,也没有部署日期。

鉴于版本更新需要花费相当长的时间来更新(30秒以上)并进行传播,因此使用这些版本信息将非常有用。

3 个答案:

答案 0 :(得分:0)

选中gcloud version,这会打印出版本信息。

答案 1 :(得分:0)

没有直接的方法可以在运行时获取函数的版本号。您始终可以选择自己分配一些值,然后使用gcloud中的--set-env-vars标志将其放在环境变量中。

如果您的目标是弄清楚某个函数调用是否实际上在运行您在开发过程中进行迭代时刚刚部署的代码,那么在函数的全局范围内简单地{ "took" : 124, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 519659, <-- this is your number "max_score" : 1.0, "hits" : [ { "_index" : "foo_bar", "_type" : "content", "_id" : "cda683e5-d5c7-4769-8e2c-d0a30eca1284", "_score" : 1.0, "_source" : { "date" : "2018-12-29T00:06:27.710Z", "key" : "cda683e5-d5c7-4769-8e2c-d0a30eca1284" } } ] } } 是有效的。部署完成后,该消息将出现在控制台日志中,您可以等待该消息出现在日志中,以便知道新代码何时处于活动状态。该日志之后记录的所有内容均应来自您的最新代码。

答案 2 :(得分:0)

最近发布的nodejs10运行时环境现在包括一个 officially documented environment variable K_REVISION包含云功能的部署版本。

从检查来看,似乎还存在python37和较旧的nodejs8环境 包含一个非官方的环境变量X_GOOGLE_FUNCTION_VERSION 恰好包含部署版本。

此代码段适用于nodejs10,非官方适用于nodejs8:

exports.helloVersion = (req, res) => {
  console.log(process.env);
  const version = process.env.K_REVISION || process.env.X_GOOGLE_FUNCTION_VERSION || "UNKNOWN";
  console.log(`Running version ${version}`);
  res.status(200).send(`Running version ${version}\n`)
};

部署和测试:

$ gcloud functions deploy helloVersion --runtime nodejs8 --trigger-http
versionId: '8'
$ curl https://us-central1-myproject.cloudfunctions.net/helloVersion
Running version 8

$ gcloud functions deploy helloVersion --runtime nodejs10 --trigger-http
versionId: '9'
$ curl https://us-central1-myproject.cloudfunctions.net/helloVersion
Running version 9

当然,nodejs10上的K_REVISION环境变量可能是 考虑到官方文档中提到的方法。 X_GOOGLE_FUNCTION_VERSION环境变量不是正式的 提到,所以依靠它来做一些重要的事情可能不是一个好主意, 但我发现机会性地展示或包括可能会有所帮助 进行交互式调试,部署和测试时。