使用上传云存储操作替换文件夹
Replace folder using upload-cloud-storage action
我在 github 操作中有以下工作流程:
name: Move artifacts
on:
push:
branches:
- main
jobs:
move_artifacts:
name: Move artifacts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- id: upload-files
uses: google-github-actions/upload-cloud-storage@main
with:
credentials: ${{ secrets.gcp_credentials }}
path: .
destination: my-bucket/my-folder/
并且,当触发此工作流时,存储库中的文件将复制到 GCS 中,但是,如果 GCS 文件夹中还有其他文件,则这些文件不会被删除。
如何以 my-bucket/my-folder
的内容与 repo 的内容完全相同的方式进行上传?我怎样才能删除不再在存储库中的文件?
您可以尝试使用 gsutil 从存储桶中删除文件,如下所示:
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@master
with:
project_id: ${{ secrets.GCP_PROJECT_ID }}
service_account_key: ${{ secrets.GCP_SA_KEY }}
export_default_credentials: true
- name: Delet files from bucket
run: gsutil rm gs://my-bucket/my-folder/**
您可以使用以下 Github 操作在目标中拥有与源中相同的文件:
name: Copy files to GCS
on:
push:
branches: [main]
jobs:
copy-files-gcs:
name: Copy directory to GCS
runs-on: ubuntu-latest
# Add "id-token" with the intended permissions.
permissions:
contents: 'read'
id-token: 'write'
steps:
- name: Checkout
uses: actions/checkout@v3
- id: 'auth'
uses: 'google-github-actions/auth@v0'
with:
credentials_json: '${{ secrets.GCP_CREDENTIALS }}'
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v0'
- name: 'Use gcloud CLI'
run: 'gsutil -m rsync -R -d kavach gs://<your-bucket>'
同步目标文件夹中文件的关键是 rsync 的 -d 标志,它删除目标中不存在于源中的文件.
我在 github 操作中有以下工作流程:
name: Move artifacts
on:
push:
branches:
- main
jobs:
move_artifacts:
name: Move artifacts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- id: upload-files
uses: google-github-actions/upload-cloud-storage@main
with:
credentials: ${{ secrets.gcp_credentials }}
path: .
destination: my-bucket/my-folder/
并且,当触发此工作流时,存储库中的文件将复制到 GCS 中,但是,如果 GCS 文件夹中还有其他文件,则这些文件不会被删除。
如何以 my-bucket/my-folder
的内容与 repo 的内容完全相同的方式进行上传?我怎样才能删除不再在存储库中的文件?
您可以尝试使用 gsutil 从存储桶中删除文件,如下所示:
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@master
with:
project_id: ${{ secrets.GCP_PROJECT_ID }}
service_account_key: ${{ secrets.GCP_SA_KEY }}
export_default_credentials: true
- name: Delet files from bucket
run: gsutil rm gs://my-bucket/my-folder/**
您可以使用以下 Github 操作在目标中拥有与源中相同的文件:
name: Copy files to GCS
on:
push:
branches: [main]
jobs:
copy-files-gcs:
name: Copy directory to GCS
runs-on: ubuntu-latest
# Add "id-token" with the intended permissions.
permissions:
contents: 'read'
id-token: 'write'
steps:
- name: Checkout
uses: actions/checkout@v3
- id: 'auth'
uses: 'google-github-actions/auth@v0'
with:
credentials_json: '${{ secrets.GCP_CREDENTIALS }}'
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v0'
- name: 'Use gcloud CLI'
run: 'gsutil -m rsync -R -d kavach gs://<your-bucket>'
同步目标文件夹中文件的关键是 rsync 的 -d 标志,它删除目标中不存在于源中的文件.