Skip to content

Build & Deploy

Build & Deploy #8

Workflow file for this run

name: Build & Deploy
on:
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Test
run: |
npm install
npm test
build:
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v3
- name: Build
run: |
npm install
npm run build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: dist
path: dist
publish:
runs-on: ubuntu-latest
needs: build
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v3
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502
with:
role-to-assume: ${{ secrets.ARN }}
aws-region: ${{ secrets.REGION }}
- name: Remove Old Version
run: |
aws s3 rm s3://${{ secrets.BUCKET_NAME }}/${{ secrets.DIRECTORY }} --recursive
- name: Deploy to S3
run: |
aws s3 sync ./dist s3://${{ secrets.BUCKET_NAME }}/${{ secrets.DIRECTORY }}
- name: Invalidate CDN Cache
run: |
aws cloudfront create-invalidation --distribution-id ${{ secrets.DISTRIBUTION_ID }} --paths "/*"
create_release:
runs-on: ubuntu-latest
needs: publish
steps:
- uses: actions/checkout@v3
- name: Get version from package.json
id: get_version
run: echo "VERSION=$(jq -r .version package.json)" >> $GITHUB_ENV
- name: Create GitHub Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ env.VERSION }}
release_name: v${{ env.VERSION }}
draft: false
prerelease: false