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'
这实际上很适合我。
我想使用 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'
这实际上很适合我。