Может ли Google Cloud Build выполнять поиск по каталогам артефактов?
Мое рабочее пространство выглядит так:
|
|--> web-app
|
|--> src
|--> build
|
|--> fonts
|--> static
мой cloudbuild.json
выглядит так:
{
"steps" : [
{
...
},
],
"artifacts": {
"objects": {
"location": "gs://my_bucket/",
"paths": [
"web-app/build/**"
]
}
}
}
Я надеюсь на то, что Google Cloud Build будет проходить через содержимое build/
папку и скопировать файлы и каталоги в мое хранилище. Вместо этого он копирует только те файлы, которые укоренены в build/
каталог, игнорирует каталоги и выдает предупреждение об использовании -r
вариант gsutil cp
,
Вот результат сборки:
...
Artifacts will be uploaded to gs://my_bucket using gsutil cp
web-app/build/**: Uploading path....
Omitting directory "file://web-app/build/fonts". (Did you mean to do cp -r?)
Omitting directory "file://web-app/build/static". (Did you mean to do cp -r?)
Copying file://web-app/build/index.html [Content-Type=text/html]...
Copying file://web-app/build/asset-manifest.json [Content-Type=application/json]...
Copying file://web-app/build/favicon.ico [Content-Type=image/vnd.microsoft.icon]...
Copying file://web-app/build/manifest.json [Content-Type=application/json]...
Copying file://web-app/build/service-worker.js [Content-Type=application/javascript]...
/ [5/5 files][ 28.4 KiB/ 28.4 KiB] 100% Done
Operation completed over 5 objects/28.4 KiB.
web-app/build/**: 5 matching files uploaded
5 total artifacts uploaded to gs://my_bucket/
Uploading manifest artifacts-d4a2b3e4-97ba-4eb0-b226-e0c914ac4f61.json
Artifact manifest located at gs://my_bucket/artifacts-d4a2b3e4-97ba-4eb0-b226-e0c914ac4f61.json
DONE
Документация https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames предполагает, что это не должно иметь место.
Полагаю, я мог бы использовать конструктор облаков gsutil, но я подозреваю, что мне это не нужно и что я здесь что-то не так делаю.
2 ответа
В настоящее время (2018-11) нет способа рекурсивно копировать каталог артефактов один в один. Лучше всего использовать шаг gsutil в файле cloudbuild.yaml (как вы уже упоминали), аналогично следующему:
steps:
- ....
- name: 'gcr.io/cloud-builders/gsutil'
args: ['-m', 'cp', '-r', 'web-app/build*', 'gs://my_bucket/$BUILD_ID']
в конце 2022 года было выпущено хранилище gcloud , которое намного быстрее копирует файлы, чем gsutils .Согласно официальному сообщению в блоге,
steps:
- ....
- name: "gcr.io/cloud-builders/gcloud-slim"
args: [
"storage",
"cp",
"--recursive",
"build",
"gs://my_bucket/$BUILD_ID",
]