Skip to content

Feat/frontend/event #265

Feat/frontend/event

Feat/frontend/event #265

Workflow file for this run

name: Development
on:
push:
branches:
- development
- main
paths-ignore:
- '**/*.md'
pull_request:
branches:
- development
- main
- feat/*
jobs:
build-and-test:
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
runs-on: ubuntu-latest
env:
SERVICE_ACCOUNT_KEY: ${{ secrets.SERVICE_ACCOUNT_KEY }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install pnpm
run: npm install -g pnpm
- name: Install dependencies
run: pnpm install
- name: Generate Prisma client
working-directory: backend
run: pnpm exec prisma generate
- name: Lint code
run: pnpm run lint
- name: Set root and backend variables for unit testing (different from building)
run: |
echo "PGHOST=${{ secrets.PGHOST_TEST }}" >> $GITHUB_ENV
echo "PGDATABASE=${{ secrets.PGDATABASE_TEST }}" >> $GITHUB_ENV
echo "PGUSER=${{ secrets.PGUSER_TEST }}" >> $GITHUB_ENV
echo "PGPASSWORD=${{ secrets.PGPASSWORD_TEST }}" >> $GITHUB_ENV
echo "DATABASE_URL=${{ secrets.DATABASE_URL_TEST }}" >> $GITHUB_ENV
echo "DIRECT_URL=${{ secrets.DIRECT_URL_TEST }}" >> $GITHUB_ENV
- name: Set frontend environment variables for unit testing (currently same as building)
run: |
echo "NEXT_PUBLIC_BACKEND_BASE_URL=${{ secrets.NEXT_APP_BACKEND_BASE_URL }}" >> $GITHUB_ENV
echo "NEXT_PUBLIC_FIREBASE_API_KEY=${{ secrets.NEXT_PUBLIC_FIREBASE_API_KEY }}" >> $GITHUB_ENV
echo "NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=${{ secrets.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN }}" >> $GITHUB_ENV
echo "NEXT_PUBLIC_FIREBASE_PROJECT_ID=${{ secrets.NEXT_PUBLIC_FIREBASE_PROJECT_ID }}" >> $GITHUB_ENV
echo "NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=${{ secrets.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET }}" >> $GITHUB_ENV
echo "NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=${{ secrets.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID }}" >> $GITHUB_ENV
echo "NEXT_PUBLIC_FIREBASE_APP_ID=${{ secrets.NEXT_PUBLIC_FIREBASE_APP_ID }}" >> $GITHUB_ENV
- name: Set Firebase Admin SDK secrets
working-directory: backend
run: |
echo "$SERVICE_ACCOUNT_KEY" > ./serviceAccountKey.json
- name: Run unit tests concurrently for frontend and backend
run: pnpm run test:unit:ci
- name: Set root and backend variables for building
run: |
echo "PGHOST=${{ secrets.PGHOST }}" >> $GITHUB_ENV
echo "PGDATABASE=${{ secrets.PGDATABASE }}" >> $GITHUB_ENV
echo "PGUSER=${{ secrets.PGUSER }}" >> $GITHUB_ENV
echo "PGPASSWORD=${{ secrets.PGPASSWORD }}" >> $GITHUB_ENV
echo "DATABASE_URL=${{ secrets.DATABASE_URL }}" >> $GITHUB_ENV
echo "DIRECT_URL=${{ secrets.DIRECT_URL }}" >> $GITHUB_ENV
- name: Set frontend environment variables for building
run: |
echo "NEXT_PUBLIC_BACKEND_BASE_URL=${{ secrets.NEXT_APP_BACKEND_BASE_URL }}" >> $GITHUB_ENV
echo "NEXT_PUBLIC_FIREBASE_API_KEY=${{ secrets.NEXT_PUBLIC_FIREBASE_API_KEY }}" >> $GITHUB_ENV
echo "NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=${{ secrets.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN }}" >> $GITHUB_ENV
echo "NEXT_PUBLIC_FIREBASE_PROJECT_ID=${{ secrets.NEXT_PUBLIC_FIREBASE_PROJECT_ID }}" >> $GITHUB_ENV
echo "NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=${{ secrets.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET }}" >> $GITHUB_ENV
echo "NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=${{ secrets.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID }}" >> $GITHUB_ENV
echo "NEXT_PUBLIC_FIREBASE_APP_ID=${{ secrets.NEXT_PUBLIC_FIREBASE_APP_ID }}" >> $GITHUB_ENV
- name: Build backend and frontend concurrently
run: pnpm run build:all
# - name: Start backend and frontend concurrently
# run: pnpm run start:all
#
# - name: Shutdown the server (optional)
# run: pkill -f "node"