See Vapor's Website for an example application using this action.
name: PR
on:
  pull_request:
    branches: [ main ]
build:
  runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Create Site
        run: |
          swift build
      - name: Deploy S3 Website
        uses: brokenhandsio/s3-website-pr-action@v2
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        with:
          bucket-prefix: "vapor-website-pulls"
          folder-to-copy: "./Output"
          bucket-region: "eu-west-2"Execute the s3-website-pr-action action on pull request opened, synchronize and reopened events. This will create a new S3 static site and upload the contents of folder-to-copy.
The site url will be posted as a deployment on the pull request.
Note: By default, workflows using the pull_request activity type will include the above events. Docs
| Environment Variable | Description | 
|---|---|
| AWS_ACCESS_KEY_ID | AWS Access Key ID of an IAM user | 
| AWS_SECRET_ACCESS_KEY | AWS Secret Access Key of an IAM user | 
| GITHUB_TOKEN | GitHub automatically provides the secret value | 
| Parameter | Description | 
|---|---|
| bucket-prefix | Prefix to the S3 bucket name | 
| folder-to-copy | The directory to your built web app. This folder will be copied to S3 | 
| bucket-region | Region to deploy the S3 bucket into | 
| Parameter | Description | 
|---|---|
| environment-prefix | Prefix to the GitHub Deployment. Defaults to 'PR-' | 
name: PR - Closed
on:
  pull_request:
    branches: [ main ]
    types: [ closed ]
build:
  runs-on: ubuntu-latest
  steps:
    - name: Delete Website Bucket
        uses: brokenhandsio/s3-website-pr-action@v2
        with:
          bucket-prefix: "vapor-website-pulls"
          bucket-region: "eu-west-2"
      env:
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}Execute the s3-website-pr-action action on pull request closed events. This will remove the S3 bucket that was created in the previous stage.
| Environment Variable | Description | 
|---|---|
| AWS_ACCESS_KEY_ID | AWS Access Key ID of an IAM user | 
| AWS_SECRET_ACCESS_KEY | AWS Secret Access Key of an IAM user | 
| GITHUB_TOKEN | GitHub automatically provides the secret value | 
| Parameter | Description | 
|---|---|
| bucket-prefix | Prefix to the S3 bucket name. This should be the same value as the other stage | 
| bucket-region | Region to deploy the S3 bucket into | 
| Parameter | Description | 
|---|---|
| environment-prefix | Prefix to the GitHub Deployment. Defaults to 'PR-' | 
| folder-to-copy | The directory to your built web app. This folder will be copied to S3 | 
| index-document | The index document for the S3 bucket. Defaults to 'index.html' | 
| error-document | The error document for the S3 bucket. Defaults to 'error.html' | 
Required IAM permissions for this action.
Replace <YOUR_BUCKET_PREFIX> with the same bucket-prefix value that you defined in your workflows.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:PutBucketWebsite",
                "s3:PutObjectAcl",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::<YOUR_BUCKET_PREFIX>-*",
            ]
        }
    ]
}The scripts and documentation in this project are released under the MIT License
