Skip to content

fix(fe): resolve 504 timeout error in vercel #5941

fix(fe): resolve 504 timeout error in vercel

fix(fe): resolve 504 timeout error in vercel #5941

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
types: [opened, edited, synchronize, reopened]
jobs:
build:
name: Build
runs-on: ubuntu-latest
strategy:
matrix:
target: [frontend, frontend-client, backend, backend-admin]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-pnpm
- name: Generate Prisma Client
if: ${{ matrix.target == 'backend' || matrix.target == 'backend-admin' }}
run: pnpm --filter backend exec prisma generate
- name: Setup Next.js build cache
if: ${{ matrix.target == 'frontend-client' }}
uses: actions/cache@v4
with:
path: frontend-client/.next/cache
key: ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }}
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml') }}-
- name: Load Next.js environment
if: ${{ matrix.target == 'frontend-client' }}
run: |
echo "NEXT_PUBLIC_BASEURL=https://dev.codedang.com/api" >> frontend-client/.env
echo "NEXT_URL=https://dev.codedang.com" >> frontend-client/.env
# If target is backend-admin, run `pnpm --filter backend build admin`
# For other targets, run `pnpm --filter <target> build`
- name: Build (backend admin)
if: ${{ matrix.target == 'backend-admin' }}
run: pnpm --filter backend build admin
- name: Build
if: ${{ matrix.target != 'backend-admin' }}
run: pnpm --filter ${{ matrix.target }} build
typecheck:
name: Typecheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-pnpm
- name: Generate Prisma Client
run: pnpm --filter backend exec prisma generate
- name: Check types (backend)
run: pnpm --filter backend exec tsc --noEmit
- name: Check types (frontend)
run: pnpm --filter frontend exec vue-tsc --noEmit
# Typecheck is not performed for frontend-client intentionally.
# Check: https://github.com/vercel/next.js/issues/53959
# Unlike backend, we don't have spec file to check types.
# So typechecking performed in the build step is enough.
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-pnpm
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: iris/go.mod
cache-dependency-path: iris/go.sum
- name: Lint pull request title
if: ${{ github.event_name == 'pull_request' }}
run: echo "${{ github.event.pull_request.title }}" | pnpm commitlint --verbose
- name: Check style (Node.js)
run: pnpm format:check
- name: Check Style (Go)
run: |
if [ -n "$(gofmt -l .)" ]; then
echo "Go files must be formatted with gofmt. Please run:"
echo " go fmt ./..."
exit 1
fi
working-directory: ./iris
- name: Lint (Node.js)
run: pnpm lint
test:
name: Test
runs-on: ubuntu-latest
env:
DATABASE_URL: postgresql://postgres:1234@localhost:5432/skkuding?schema=public
services:
postgres:
image: postgres:16-alpine
ports:
- 5432:5432
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 1234
POSTGRES_DB: skkuding
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-pnpm
- name: Check Prisma Migration
run: |
pnpm --filter backend exec prisma migrate diff \
--from-migrations ./prisma/migrations \
--to-schema-datamodel ./prisma/schema.prisma \
--shadow-database-url ${{ env.DATABASE_URL }} \
--exit-code ||
(echo "::error::Prisma migration is not up to date." \
"Please run 'pnpm prisma migrate dev' locally and commit the changes." && exit 1)
- name: Migrate Prisma
run: pnpm --filter backend exec prisma migrate reset --force
- name: Check types in Typescript
run: pnpm --filter backend exec tsc --noEmit
- name: Test
run: pnpm -r test