Cloud Build无法上传工件

时间:2019-10-24 16:30:18

标签: google-cloud-build

我有一个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

有人知道如何进行这项工作吗?

2 个答案:

答案 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”作为入口点执行脚本。