【发布时间】:2019-11-14 17:47:10
【问题描述】:
问题: 我正在尝试在二级编译(second-level-compilation.yaml)中使用此步骤部署一个函数
- name: 'gcr.io/cloud-builders/gcloud'
args: ['beta', 'functions',
'deploy', '${_FUNCTION_NAME}',
'--source', 'path/to/function',
'--runtime', 'go111',
'--region', '${_GCP_CLOUD_FUNCTION_REGION}',
'--entry-point', '${_ENTRYPOINT}',
'--env-vars-file', '${_FUNCTION_PATH}/.env.${_DEPLOY_ENV}.yaml',
'--trigger-topic', '${_TRIGGER_TOPIC_NAME}',
'--timeout', '${_FUNCTION_TIMEOUT}',
'--service-account', '${_SERVICE_ACCOUNT}']
我使用控制台从 Cloud Build 收到此错误。
第 1 步:第 11 步:错误:(gcloud.beta.functions.deploy) 使用目录 path/to/function 的源代码创建 ZIP 存档时出错:ZIP 不支持 1980 年之前的时间戳
这是全局流程:
-
接下来的步骤是在一级编译(first-level-compilation.yaml)。这是由 Cloud build 使用 Github 存储库触发的(通过 Application GitHub Cloud Build):
- name: 'gcr.io/cloud-builders/gcloud' entrypoint: 'bash' args: ['-c', 'launch-second-level-compilation.sh ${_MY_VAR}'] 脚本“launch-second-level-compilation.sh”基于 ${_MY_VAR} 执行特定操作,然后启动二级编译,通过“gcloud builds submit --config”传递大量替换变量=second-level-compilation.yaml --substitutions=_FUNCTION_NAME=val,_GCP_CLOUD_FUNCTION_REGION=val,....."
然后,使用生成并通过 launch-second-level-compilation.sh 脚本传递的替换值执行本问题开头描述的“second-level-compilation.yaml”。
这里的主要思想是让一个通用的第一级编译.yaml 负责调用具有特定动态生成替换的第二级编译。
尝试/调查
如本期Cloud Container Builder, ZIP does not support timestamps before 1980 中所述,我尝试“ls”/workspace 目录中的文件。但是 /workspace 根目录下的所有文件都没有奇怪的 DATE。
我将 path/to/function 从相对路径更改为 /workspace/path/to/function,但没有成功,因为目录最终相同。
【问题讨论】:
-
在您的“ls”测试中,您是否递归地列出了文件? /workspace 目录本身的日期/时间呢?
-
您是否能够在没有额外间接的情况下部署 Go Cloud Function?可能不相关,Go Cloud Functions 已经过测试版,因此您不需要 gcloud 命令中的 beta arg。
-
感谢您的反馈。我们最终暂时只进行了一级编译。更易读的实现,但需要更具体的东西和变量在部署之前明确定义。
标签: go google-cloud-functions google-cloud-build