best / .github /workflows /ci.yml
anky2002's picture
fix(P0): CI workflow removes --frozen-lockfile, uses eslint directly, fixes lint step
74220e2 verified
Raw
History Blame Contribute Delete
2.88 kB
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
env:
PYTHON_VERSION: "3.12"
NODE_VERSION: "20"
POSTGRES_USER: test
POSTGRES_PASSWORD: test
POSTGRES_DB: jobportal_test
jobs:
backend-lint:
name: Backend Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- run: pip install ruff
- run: cd backend && ruff check .
- run: cd backend && ruff format --check .
backend-test:
name: Backend Tests
runs-on: ubuntu-latest
services:
postgres:
image: pgvector/pgvector:pg17
env:
POSTGRES_USER: ${{ env.POSTGRES_USER }}
POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }}
POSTGRES_DB: ${{ env.POSTGRES_DB }}
ports: ["5432:5432"]
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7-alpine
ports: ["6379:6379"]
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
env:
POSTGRES_SERVER: localhost
POSTGRES_PORT: 5432
POSTGRES_USER: test
POSTGRES_PASSWORD: test
POSTGRES_DB: jobportal_test
REDIS_URL: redis://localhost:6379/0
SECRET_KEY: test-secret-key-for-ci-minimum-32-chars
APP_ENV: testing
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- run: pip install uv
- run: cd backend && uv sync
- run: cd backend && uv run pytest -v --cov=app
frontend-typecheck:
name: Frontend Type Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- uses: pnpm/action-setup@v4
with:
version: 9
- run: cd frontend && pnpm install
- run: cd frontend && pnpm tsc --noEmit
frontend-build:
name: Frontend Build
runs-on: ubuntu-latest
needs: frontend-typecheck
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- uses: pnpm/action-setup@v4
with:
version: 9
- run: cd frontend && pnpm install
- run: cd frontend && NEXT_PUBLIC_API_URL= pnpm build
docker-build:
name: Docker Build
runs-on: ubuntu-latest
needs: [backend-test, frontend-build]
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- run: docker build ./backend -t jobportal-backend:ci
- run: docker build ./frontend -t jobportal-frontend:ci