python - 带有 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 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'
这实际上对我来说做得很好。
推荐阅读
- javascript - 我可以使用 Visual Studio Code 分析 NodeJS 应用程序吗?
- qt - Qt - 清除布局后未正确将小部件添加到 QHBoxLayout
- android - 以编程方式访问下载的文件
- identityserver4 - 如何使用 IdentityServer 添加审计日志
- jar - 设置后我无法立即登录 Metabase
- python-3.x - pytest 用 boto3 模拟
- python - Python 多处理仅在一个带有网络的核心上工作
- python - BeautifulSoup 和处理文本结果的问题
- html - 链接中的锚点在 chrome 中的移动设备上不起作用
- .net - 从 Vb.Net 中活动运行的 Powershell 实例获取信息