Skip to content
name: Deploy on push version tags
on:
push:
tags:
- v*.*.*
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: 20
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: npm-
- name: Install npm package
run: npm ci --legacy-peer-deps
- name: Build application
run: npm run build:prod -- --output-path=./dist/build-by-ci
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_IAM_ROLE_ARN }}
aws-region: ap-northeast-1
- name: Deploy and create invalidation
run: |
aws s3 sync ./dist/build-by-ci s3://${{ secrets.DEPLOY_BUCKET_NAME }} --delete --cache-control "max-age=31536000"
aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths '/*'