GitHub Action to upload files to a Cloudflare R2 bucket, built on top of @aws-sdk/client-s3 in TypeScript.
Combination of these two repos: S3 Upload Action and Cloudflare R2 Upload.
Important
Node.js 20 is now required to run this action.
- uses: ryand56/r2-upload-action@latest
with:
r2-account-id: ${{ secrets.R2_ACCOUNT_ID }}
r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }}
r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }}
r2-bucket: ${{ secrets.R2_BUCKET }}
source-dir: src
destination-dir: ./
In this example, source-dir
is stored in the root of the bucket.
Change destination-dir
input to specify the location of where the directory will be uploaded.
- uses: ryand56/r2-upload-action@latest # Can be any release
with:
r2-account-id: ${{ secrets.R2_ACCOUNT_ID }}
r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }}
r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }}
r2-bucket: ${{ secrets.R2_BUCKET }}
source-dir: src
destination-dir: artifacts # Can be anything as long as it is an actual path
output-file-url: true # defaults to true
multipart-size: 100 # If the file size is greater than the value provided here, then use multipart upload
max-retries: 5 # The maximum number of retries it takes to upload a multipart chunk until it moves on to the next part
multipart-concurrent: true # Whether to concurrently upload a multipart chunk
keep-file-fresh: false # defaults to false
See the latest action.yml for every input and output or take a look below.
Name | Description | Default |
---|---|---|
r2-account-id |
(Required) Your Cloudflare account ID. | N/A |
r2-access-key-id |
(Required) Your Cloudflare R2 bucket access key ID. | N/A |
r2-secret-access-key |
(Required) Your Cloudflare R2 bucket secret access key. | N/A |
r2-bucket |
(Required) Your Cloudflare R2 bucket name. | N/A |
source-dir |
(Required) The directory to upload to the Cloudflare R2 bucket. | N/A |
destination-dir |
(Optional) The destination to upload the directory to in the Cloudflare R2 bucket. | Empty string |
output-file-url |
(Optional) Output the results of the action uploaded files to the file-urls output |
true |
multipart-size |
(Optional) The minimum file size to use multipart file upload | 100 (in MB) |
max-retries |
(Optional) The maximum number of retries before failing | 5 |
multipart-concurrent |
(Optional) Use multipart concurrent file uploading | true |
keep-file-fresh |
(Optional) Keep the destination up-to-date, which will permanently delete the previous contents | false |
Name | Description |
---|---|
result |
Result of this action. Either success or failure is set. |
file-urls |
The URLs of the uploaded files in the directory. |
See the contributing guide for more detail on how to implement something into the project.