使用python入口点构建Google云gsutil
我想通过使用python入口点构建Google云gsutil,python,google-cloud-build,gsutil,Python,Google Cloud Build,Gsutil,我想通过子流程调用gsutil,使用python脚本从Google存储下载几个文件。在云构建步骤中,检查python脚本中的\u call() 因此,我在cloudbuild.yaml中使用以下步骤: - name: 'gcr.io/cloud-builders/gsutil' entrypoint: 'bash' args: ['-c', 'pip install google-cloud-storage && python /path_to_scri
子流程调用gsutil
,使用python脚本从Google存储下载几个文件。在云构建步骤中,检查python脚本中的\u 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'
]
但是云构建抛出了一个奇怪的SyntaxError:无效语法Python错误。我可以使用相同的参数在本地运行相同的Python脚本,也可以使用Python:3.7-sim
在云构建内部运行相同的Python脚本,并使用该语法错误:
- 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'
这实际上对我来说做得很好。我找到了一个更简单的解决方案,通过调用专用的gsutil
图像并结合通配符来完成类似于python脚本中的过滤。
请参见下面的简化示例:
- name: 'gcr.io/cloud-builders/gsutil'
entrypoint: 'bash'
args:
- '-c'
- |
gsutil -m cp -r 'gs://bucket/*/' '/workspace'
这实际上对我来说做得很好。你在脚本中做什么?脚本提取bucket中所有文件的列表,并根据一些用户输入进行过滤(在cloud build中使用替换变量)。然后,文件被下载到云构建中的当前工作区。有趣的是,这些脚本在函数定义的开头就中断了。如前所述,脚本本身在本地以及python:3.7-slim容器中运行。我无法重现您的错误。这就是为什么我想了解你为了失败而做的特殊事情。如果你有一个最小的代码来重现这个问题,它是完美的!你在脚本中做什么?脚本提取bucket中所有文件的列表,并根据一些用户输入过滤它们(使用云构建中的替换变量)。然后,文件被下载到云构建中的当前工作区。有趣的是,这些脚本在函数定义的开头就中断了。如前所述,脚本本身在本地以及python:3.7-slim容器中运行。我无法重现您的错误。这就是为什么我想了解你为了失败而做的特殊事情。如果你有一个最小的代码来重现这个问题,它是完美的!