我有一个Cloud Build,在最后一个容器之后,我尝试上传工件。
我的Yaml结尾为:
- name: eu.gcr.io/foo/bar
args: ["arg1"]
artifacts:
objects:
location: "gs://foo-bar/go/"
paths: ["/output/*"]
我的期望与CloudBuild示例相似,它将采用最后一个Container的/output
目录并将其所有文件上传到foo-bar/go
。通配符非常重要,但是由于我事先不知道,哪些文件将位于/output
中。
相反,我收到错误消息:
ERROR: could not upload /output/* to gs://foo-bar/go/; err = exit status 1
ERROR
CommandException: 1 file/object could not be transferred.
CommandException: No URLs matched: /output/*
/output/*: Uploading path....
Artifacts will be uploaded to gs://foo-bar using gsutil cp
有人知道如何进行这项工作吗?
答案 0 :(得分:1)
使用音量通过显式的 gsutil 调用进行操作。 在这一点上,我可以假设文档中的某些示例实际上不起作用。不过,这对我有用:
- name: eu.gcr.io/foo/bar
args: ["arg1"]
volumes:
- name: data
path: /output
- name: gcr.io/cloud-builders/gsutil
args: ["cp", "/output/*", "gs://foo-bar/go/"]
volumes:
- name: data
path: /output
不像artifacts
那样精巧,但至少可以完成工作。
答案 1 :(得分:0)
我要说的正确方法是确定“ / output”文件夹中的内容,因此在尝试存储数据之前,您可以尝试列出文件夹的步骤要比工件早一步。或者也可以使用“ find”命令查找输出文件夹。您可以将此doc用作指导,在该脚本中,使用“ bash”作为入口点执行脚本。