得到;ZIP不支持1980年之前的时间戳”;通过触发器在GCP上部署Go Cloud功能时

得到;ZIP不支持1980年之前的时间戳”;通过触发器在GCP上部署Go Cloud功能时,go,google-cloud-functions,google-cloud-build,Go,Google Cloud Functions,Google Cloud Build,问题: 我正试图在第二级编译(second-levelcompilation.yaml)中使用此步骤部署函数 我使用控制台从云构建中得到这个错误 步骤#1:步骤#11:错误:(gcloud.beta.functions.deploy)使用目录path/to/function的源代码创建ZIP存档时出错:ZIP不支持1980年以前的时间戳 以下是全球流程: 以下步骤是第一级编译(first-levelcompilation.yaml)。这是由使用Github存储库的云构建触发的(通过应用程序Git

问题: 我正试图在第二级编译(second-levelcompilation.yaml)中使用此步骤部署函数

我使用控制台从云构建中得到这个错误

步骤#1:步骤#11:错误:(gcloud.beta.functions.deploy)使用目录path/to/function的源代码创建ZIP存档时出错:ZIP不支持1980年以前的时间戳

以下是全球流程:

  • 以下步骤是第一级编译(first-levelcompilation.yaml)。这是由使用Github存储库的云构建触发的(通过应用程序Github云构建):

  • 脚本“launch second-level compilation.sh”基于${u MY_VAR}执行特定的操作,然后启动第二级编译,通过大量替换变量传递“gcloud builds submit--config=second-level-compilation.yaml--substitutions=\u FUNCTION\u NAME=val,\GCP\u CLOUD\u FUNCTION\u REGION=val,…”

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

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

    尝试/调查

  • 如本期所述,我尝试“ls”了/workspace目录中的文件。但是/workspace根目录下的所有文件都没有奇怪的日期

  • 我将路径/to/function从相对路径更改为/workspace/path/to/function,但没有成功,因为目录最终是相同的


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

    |--dir
       |--subdir1
       |  |--file1
       |--subdir2
          |--file2
    
    在本例中,
    dir
    不直接包含任何文件,只包含子目录。在本地部署期间,gcp sdk将
    dir
    放入tarball,而不复制上次修改的
    字段。
    因此,它被设置为1970年1月1日的
    1st
    ,这会导致ZIP出现问题


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

    在“ls”测试中,是否递归列出文件?/workspace目录本身的日期/时间如何?您是否能够在没有额外间接寻址的情况下部署Go Cloud功能?可能与此无关,Go Cloud函数已过测试版,因此您不需要gcloud命令中的beta arg。感谢您的反馈。目前,我们最终只进行了一级编译。更具可读性的实现,但需要在部署之前明确定义更具体的内容和变量。
    - name: 'gcr.io/cloud-builders/gcloud'
      entrypoint: 'bash'
      args: ['-c', 'launch-second-level-compilation.sh ${_MY_VAR}']
    
    |--dir
       |--subdir1
       |  |--file1
       |--subdir2
          |--file2