Skip to content

Monorepo (#12)

Monorepo (#12) #25

Workflow file for this run

name: 🌎 Web
on:
push:
branches:
- main
- dev
pull_request: {}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
actions: write
contents: read
jobs:
build-and-test:
name: Build and Test
uses: ./.github/workflows/shared-ci.yml
with:
node-version: '20'
playwright:
name: 🎭 Playwright
runs-on: ubuntu-22.04
timeout-minutes: 60
steps:
- name: ⬇️ Checkout repo
uses: actions/checkout@v4
- name: Cache turbo build setup
uses: actions/cache@v4
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.sha }}
restore-keys: |
${{ runner.os }}-turbo-
- name: πŸ„ Copy test env vars
run: cp .env.example .env
- name: πŸ„ Copy test env vars to App
run: cp .env.example apps/sovoli.com/.env
- name: βŽ” Setup node
uses: actions/setup-node@v4
with:
node-version: 20
- name: πŸ“₯ Download deps
uses: bahmutov/npm-install@v1
- name: πŸ›  Setup Database
run: npx prisma migrate deploy
- name: 🏦 Cache Database
id: db-cache
uses: actions/cache@v3
with:
path: prisma/data.db
key:
db-cache-schema_${{ hashFiles('./prisma/schema.prisma')
}}-migrations_${{ hashFiles('./prisma/migrations/*/migration.sql')
}}
- name: 🌱 Seed Database
if: steps.db-cache.outputs.cache-hit != 'true'
run: npx prisma db seed
env:
MINIMAL_SEED: true
- name: πŸ— Build
run: npm run build
- name: 🎭 Install Playwright Browsers and run tests
run: npm run test:e2e:ci
- name: πŸ“Š Upload report
uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: apps/samelogic.com/playwright-report/
retention-days: 30
deploy:
name: πŸš€ Deploy
runs-on: ubuntu-22.04
needs: [build-and-test, playwright]
environment: Production
concurrency: Production
# only build/deploy branches on pushes
if: ${{ github.event_name == 'push' }}
steps:
- name: ⬇️ Checkout repo
uses: actions/checkout@v4
- name: πŸ‘€ Read app name
uses: SebRollen/toml-action@v1.2.0
id: app_name
with:
file: 'fly.toml'
field: 'app'
# move Dockerfile to root
- name: 🚚 Move Dockerfile
run: |
mv ./other/Dockerfile ./Dockerfile
mv ./other/.dockerignore ./.dockerignore
- name: 🎈 Setup Fly
uses: superfly/flyctl-actions/setup-flyctl@1.5
- name: πŸš€ Deploy Production
if: ${{ github.ref == 'refs/heads/main' }}
run:
flyctl deploy --remote-only --build-arg COMMIT_SHA=${{ github.sha }}
--build-secret SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}