我正在尝试将文件夹(/data/out
)从Cloud Build复制到Google Cloud Storage:
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim'
volumes:
- name: 'vol1'
path: '/data'
entrypoint: 'gsutil'
args:
- -m
- cp
- -r
- /data/out
- gs://mybucket/files
第一次运行时,所有来自/data/out的内容都被复制到桶中,这是我想要的。
当我第二次运行它来覆盖/更新文件时,有一个文件夹/files/out
代替,所以新文件在mybucket/files/out/*
而不是mybucket/files/*
。
我该如何解决这个问题?
我试图添加另一个步骤来删除文件夹,然后再复制它(rm -r gs://mybucket/files
),但这个步骤第一次失败,因为文件夹还不存在,导致构建失败/完全停止。
终于得到了这个工作与rsync
而不是cp
感谢云构建->Google云存储:关于部署时停机时间的问题
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim'
id: copy
volumes:
- name: 'vol1'
path: '/data'
entrypoint: 'gsutil'
args:
- -m
- rsync
- -r
- -d
- /data/out/
- gs://mybucket/folder
我将上一步生成的本地文件夹复制到GS桶中。随后的构建运行并覆盖文件。
我使用:
- name: 'gcr.io/cloud-builders/gsutil'
args: [ 'cp', '-r',
'./public',
'gs://{BUCKET_NAME}/test' ]