fix(fe): resolve 504 timeout error in vercel #5941
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |