Cloud Build не может загрузить артефакт - PullRequest
0 голосов
/ 24 октября 2019

У меня есть Cloud Build, где после последнего контейнера я пытаюсь загрузить артефакты.

Мой yaml заканчивается на:

- name: eu.gcr.io/foo/bar
  args: ["arg1"]
artifacts:
  objects:
    location: "gs://foo-bar/go/"
    paths: ["/output/*"]

Я ожидаю, что это будет похоже на примеры CloudBuild, это займет каталог /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 ]

1 голос
/ 25 октября 2019

Получил работу с явным вызовом 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, но, по крайней мере, оно выполняет свою работу.

0 голосов
/ 25 октября 2019

Я бы сказал, что правильный подход - иметь уверенность в том, что находится в папке «/ output», поэтому, прежде чем пытаться сохранить данные, вы можете попытаться составить список папок за один шаг до того, как артефакты окажутся. Или также найдите выходную папку с помощью команды «найти». Вы можете использовать в качестве руководства этот документ , где сценарии выполняются с использованием в качестве точки входа «bash»

...