Google 具有 python 入口点的 Cloud Build gsutil

Google Cloud Build gsutil with python entrypoint

我想使用 python 脚本从 Google 存储中下载多个文件,方法是在 Python 脚本中通过 subprocess.check_call() 调用 gsutil云构建步骤。

因此,我在cloudbuild.yaml里面使用下面的步骤:

- name: 'gcr.io/cloud-builders/gsutil'
  entrypoint: 'bash'
  args: ['-c',
         'pip install google-cloud-storage && python /path_to_script/script.py --arg1 $_ARG1 --arg2 $TAG_NAME --arg3 $BRANCH_NAME --arg4 $_ARG4'
  ]

但是 Cloud Build 会抛出一个奇怪的 SyntaxError: invalid syntax Python 错误。我可以 运行 具有相同参数的相同 Python 脚本在本地 以及 通过在 Cloud Build 中使用 python:3.7-sim 和 SyntaxError:

- name: 'python:3.7-slim'
  entrypoint: /bin/sh
  args: ['-c',
         'pip install google-cloud-storage && python python /path_to_script/script.py --arg1 $_ARG1 --arg2 $TAG_NAME --arg3 $BRANCH_NAME --arg4 $_ARG4'
  ]

后面的示例一直有效,直到 gsutil 被调用,因为它不是 python:3.7-slim 容器的一部分(因此是预期的行为)。

关于 gcr.io/cloud-builders/gsutil 为何抛出该错误的任何帮助评论?入口点是否指定错误?

我找到了一个更简单的解决方案,方法是调用专用 gsutil 图像并结合通配符来完成与 python 脚本中类似的过滤。 请参阅下面的简化示例:

- name: 'gcr.io/cloud-builders/gsutil'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
    gsutil -m cp -r 'gs://bucket/*/' '/workspace'

这实际上很适合我。