This action upload directory to AWS S3 or DO Spaces by public read and output key that generated by shortid
Note - The last source_dir name(
foo/bar/will-be-replace
) will be replaced to the key generated as shortid. The reason is that upload a new one every time and I want to access s3 with a new key value. If you want to upload a single file, be sure to create a folder and upload it.
Place in a .yml
file such as this one in your .github/workflows
folder. Refer to the documentation on workflow YAML syntax here.
name: Upload to S3 or DO Spaces
on: [pull_request]
jobs:
upload:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: shallwefootball/s3-upload-action@master
with:
aws_key_id: ${{ secrets.AWS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY}}
aws_bucket: ${{ secrets.AWS_BUCKET }}
source_dir: 'dirname'
endpoint: ${{ secrets.AWS_ENDPOINT }} # digitalocean spaces endpoint (if you're using digitalocean spaces instead of s3)
Recommend using with deployment-action in pull request.
name: Deploy for preview
on: [pull_request]
jobs:
preview:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: chrnorm/deployment-action@releases/v1
name: Create GitHub deployment
id: test
with:
token: ${{ secrets.GITHUB_TOKEN}}
description: 'Preview my app'
environment: preview
- uses: shallwefootball/s3-upload-action@master
name: Upload S3
id: S3
with:
aws_key_id: ${{ secrets.AWS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY}}
aws_bucket: ${{ secrets.AWS_BUCKET }}
source_dir: 'static'
- name: Update deployment status (success)
if: success()
uses: chrnorm/deployment-status@releases/v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
target_url: https://aws-bucket.s3.ap-northeast-2.amazonaws.com/${{steps.S3.outputs.object_key}}/index.html
state: 'success'
deployment_id: ${{ steps.test.outputs.deployment_id }}
The following settings must be passed as environment variables as shown in the example. Sensitive information, especially aws_key_id
and aws_secret_access_key
, should be set as encrypted secrets — otherwise, they'll be public to anyone browsing your repository's source code
name | description |
---|---|
aws_key_id |
(Required) Your AWS Access Key. More info here. |
aws_secret_access_key |
(Required) Your AWS Secret Access Key. More info here. |
aws_bucket |
(Required) The name of the bucket you're upload to. |
source_dir |
(Required) The local directory (or file) you wish to upload to S3. The directory will replace to key generated by shortid in S3 |
destination_dir |
(Optional) The destination directory in S3 If this field is excluded a shortid will be generated |
endpoint |
(Optional) If you want to use Digitalocean Spaces, then you have to provide the endpoint. e.g.: sgp1.digitaloceanspaces.com |
To upload to the root directory, set
destination_dir: ''
inaction.yml
name | description |
---|---|
object_key |
Uploaded object key generated by shortid in Bucket |
object_locations |
Object Locations |