首页 > 解决方案 > 带有 python 入口点的 Google Cloud Build gsutil

问题描述

我想使用 python 脚本通过在 Cloud Build 步骤期间gsutil通过Python 脚本内部调用来从 Google Storage 下载多个文件。subprocess.check_call()

因此,我在内部使用以下步骤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 syntaxPython 错误。我可以在本地运行具有相同参数的相同 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关于为什么抛出该错误的任何帮助评论?是否错误指定了入口点?

标签: pythongoogle-cloud-buildgsutil

解决方案


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

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

这实际上对我来说做得很好。


推荐阅读