【发布时间】:2021-02-01 15:20:42
【问题描述】:
我想使用 Python 脚本从 Google Storage 下载多个文件,方法是在 Cloud Build 步骤期间通过 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 容器的一部分(因此是预期的行为)。
任何帮助 cmets 为什么gcr.io/cloud-builders/gsutil 会抛出该错误?入口点是否指定错误?
【问题讨论】:
-
你在脚本中做了什么?
-
脚本拉取存储桶中所有文件的列表,并根据一些用户输入过滤它们(在云构建中使用替换变量)。然后,将文件下载到云构建中的当前工作区。有趣的是,脚本在函数定义的开头就中断了。如前所述,脚本本身在本地运行以及在 python:3.7-slim 容器中运行。
-
我无法重现您的错误。这就是为什么我想了解你为失败所做的特殊事情。如果您有最少的代码来重现该问题,那就完美了!
标签: python google-cloud-build gsutil