Может ли Google Cloud Build выполнять поиск по каталогам артефактов? - PullRequest
0 голосов
/ 16 октября 2018

Моя рабочая область выглядит следующим образом:

|
|--> 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#directory-by-directory-vs-recursive-wildcards предполагает, что это не должно быть так.

Полагаю, я мог бы использовать gsutil cloud builder , но я подозреваю, чтоМне не нужно и что я здесь что-то не так делаю.

1 Ответ

0 голосов
/ 31 октября 2018

В настоящее время (2018-11) нет способа рекурсивно копировать каталог артефактов один в один.Лучше всего использовать шаг gsutil в файле cloudbuild.yaml (как вы уже упоминали), аналогично:

steps:
- ....
- name: 'gcr.io/cloud-builders/gsutil'
  args: ['-m', 'cp', '-r', 'web-app/build*', 'gs://my_bucket/$BUILD_ID']
...