Skip to content

Upload “static/assets/icon-ec2.svg” #120

Upload “static/assets/icon-ec2.svg”

Upload “static/assets/icon-ec2.svg” #120

Workflow file for this run

name: Deploy to production
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
branches: [main]
jobs:
lint-js:
name: Lint JavaScript
runs-on: ubuntu-latest
env:
NODE_ENV: test
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Use NodeJS 20.x
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'
# Install Node Modules
- name: Install
run: npm ci --legacy-peer-deps
# Lint JavaScript
- name: Lint JavaScript
run: npm run lint:js
lint-css:
name: Lint CSS
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Use NodeJS 20.x
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'
# Install Node Modules
- name: Install
run: npm ci --legacy-peer-deps
# Lint CSS
- name: Lint CSS
run: npm run lint:scss
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Use NodeJS 20.x
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'
# Install Node Modules
- name: Install
run: npm ci --legacy-peer-deps
# Test
- name: Test
run: npm run test
build:
name: Build
runs-on: ubuntu-latest
needs: [lint-css, lint-js, test]
env:
NODE_ENV: ${{ vars.NODE_ENV }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Use NodeJS 20.x
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'
# Install Node Modules
- name: Install
run: npm ci --legacy-peer-deps
# Build the website
- name: Build
run: npm run build
# Zip artifacts
- name: Zip artifacts
run: zip -r public.zip ./public
# Upload artifacts
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: artifacts
path: public.zip
deploy:
name: Deploy
needs: build
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v4
# Download artifacts
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: artifacts
path: ./
# Unzip artifacts
- name: Unzip artifacts
run: unzip ./public.zip -d ./
# Prepare AWS SDK
- name: Prepare AWS SDK
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ vars.AWS_REGION }}
# Deploy portfolio website
- name: Deploy
run: aws s3 sync ./public/ s3://${{ vars.S3_BUCKET_NAME }} --delete
# Deploy portfolio website
- name: Invalidate CloudFront cache
run: aws cloudfront create-invalidation --distribution-id ${{ vars.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*"