Skip to content

Implement delete goal functionality #99

Implement delete goal functionality

Implement delete goal functionality #99

Workflow file for this run

name: 'Main'
on:
pull_request:
branches: ['master']
push:
branches: ['master']
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: oven-sh/setup-bun@v1
with:
bun-version: 1.0.0
- uses: actions/checkout@v3
- name: Restore cached dependencies
id: dependency-restore
uses: actions/cache/restore@v3
with:
path: node_modules/
key: ${{ runner.os }}-node-modules-${{ hashFiles('bun.lockb') }}
- name: Install dependencies
run: bun i --frozen-lockfile
- name: Save dependency cache
id: dependency-save
uses: actions/cache/save@v3
with:
path: node_modules/
key: ${{ runner.os }}-node-modules-${{ hashFiles('bun.lockb') }}
- name: Check formatting
run: bun run check-format
- name: Build
run: bun run build
# Upload repo with built files and dependencies for use in subsequent jobs
- uses: actions/upload-artifact@v3
with:
name: build
path: build
jest-tests:
name: Unit Tests
runs-on: ubuntu-latest
needs: build
steps:
- uses: oven-sh/setup-bun@v1
with:
bun-version: 1.0.0
- uses: actions/checkout@v3
- name: Restore cached dependencies
id: dependency-restore
uses: actions/cache/restore@v3
with:
path: node_modules/
key: ${{ runner.os }}-node-modules-${{ hashFiles('bun.lockb') }}
- uses: actions/download-artifact@v3
with:
name: build
- name: Run unit tests
run: bun run test
cypress-tests:
name: E2E Tests
runs-on: ubuntu-latest
needs: build
env:
CYPRESS_RECORD_KEY: ${{ secrets.TOP90_CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: oven-sh/setup-bun@v1
with:
bun-version: 1.0.0
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Restore cached dependencies
id: dependency-restore
uses: actions/cache/restore@v3
with:
path: node_modules/
key: ${{ runner.os }}-node-modules-${{ hashFiles('bun.lockb') }}
- name: Start app
run: bun start &
- name: Restore Cypress cache
id: cypress-restore
uses: actions/cache/restore@v3
with:
path: /home/runner/.cache/Cypress
key: ${{ runner.os }}-cypress-${{ hashFiles('bun.lockb') }}
- name: Install Cypress
run: bun cypress install
- name: Save Cypress cache
id: cypress-save
uses: actions/cache/save@v3
with:
path: /home/runner/.cache/Cypress
key: ${{ runner.os }}-cypress-${{ hashFiles('bun.lockb') }}
- name: Run Cypress e2e with record
if: ${{ env.CYPRESS_RECORD_KEY }}
run: bun cypress run --e2e --record
- name: Run Cypress e2e
if: ${{ !env.CYPRESS_RECORD_KEY }}
run: bun cypress run --e2e
deploy:
name: Deploy
needs: [build, jest-tests, cypress-tests]
if: github.ref_name == 'master'
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
with:
name: build
path: build
- name: Set environment variables
run: export AWS_PAGER=
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.TOP90_AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.TOP90_AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Sync files to S3
run: aws s3 sync build/ s3://www.top90.io
- name: Invalidate Caches
run: |
aws cloudfront create-invalidation --distribution-id E35J0ICF5X5SHZ --paths "/*"
aws cloudfront create-invalidation --distribution-id EECYMS9J1D029 --paths "/*"