通过触发器在GCP上部署Go Cloud功能时,出现了“ ZIP不支持1980年之前的时间戳”

问题: 我正在尝试在第二级编译(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)使用目录路径/目标目录/功能的源代码创建ZIP存档时出错:1980年之前的ZIP不支持时间戳

以下是全局流程:

  1. 下一步是在第一级编译(first-level-compilation.yaml)中。这是由使用Github存储库的Cloud构建触发的(通过Application GitHub Cloud Build):

    - name: 'gcr.io/cloud-builders/gcloud'
      entrypoint: 'bash'
      args: ['-c','launch-second-level-compilation.sh ${_MY_VAR}']
    
  2. 脚本“ launch-second-level-compilation.sh”基于$ {_ MY_VAR}进行特定的操作,然后启动第二级编译,并通过“ gcloud builds commit --config”传递大量替换变量= second-level-compilation.yaml --substitutions = _FUNCTION_NAME = val,_GCP_CLOUD_FUNCTION_REGION = val,.....“

  3. 然后,使用生成并通过launch-second-level-compilation.sh脚本传递的替换值来执行在此问题开头描述的“ second-level-compilation.yaml”。

这里的主要思想是让通用的first-level-compilation.yaml负责调用具有特定动态生成的替换的第二级编译。

尝试/调查

  1. 如本期Cloud Container Builder,ZIP does not support timestamps before 1980中所述,我试图“ ls” / workspace目录中的文件。但是/ workspace根目录下的文件都没有奇怪的DATE。

  2. 我将path / to / function从相对路径更改为/ workspace / path / to / function,但是没有成功,并且由于目录结尾相同而感到惊讶。

wuzhijunxx 回答:通过触发器在GCP上部署Go Cloud功能时,出现了“ ZIP不支持1980年之前的时间戳”

请确保您没有没有文件的文件夹。例如:

|--dir
   |--subdir1
   |  |--file1
   |--subdir2
      |--file2

在此示例中,dir不直接包含任何文件,仅包含子目录。在本地部署期间,gcp sdk将dir放入tarball中,而不复制last modified字段。 因此将其设置为1st Jan 1970会导致ZIP问题。

可能的解决方法是,确保每个目录至少包含一个文件。

本文链接:https://www.f2er.com/3100358.html

大家都在问