Skip to content

Instantly share code, notes, and snippets.

@crazyoptimist
Last active May 1, 2024 09:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save crazyoptimist/4e897969ddffdbe0b020e0a4a1f6e7fa to your computer and use it in GitHub Desktop.
Save crazyoptimist/4e897969ddffdbe0b020e0a4a1f6e7fa to your computer and use it in GitHub Desktop.
Deploy SPA into AWS Cloudfront & S3
name: Deploy SPA
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'
- name: Install Dependencies
run: npm ci
- name: Build SPA Project
run: npm run build
- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: dist
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: Download Build Artifacts
uses: actions/download-artifact@v4
with:
name: build-artifacts
path: dist
- name: Configure AWS credentials with Github Secrets
uses: aws-actions/configure-aws-credentials@v4
with:
aws-region: ${{ secrets.AWS_REGION }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: Upload Build Artifacts to S3
run: aws s3 sync ./dist s3://${{ secrets.S3_BUCKET }}
- name: Invalidate Cloudfront Cache
run: aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment