diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..33217d54c --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,68 @@ +name: Continuous Integration + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + backend: + name: Backend CI + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + cache: "pip" + + - name: Install system dependencies + run: sudo apt-get update && sudo apt-get install -y libcairo2-dev pkg-config + + - name: Install Python dependencies + run: | + python -m pip install --upgrade pip + pip install -r backend/requirements.txt -r backend/requirements-dev.txt + + - name: Run linting + run: ruff check backend testing/backend + + - name: Run test suite + run: pytest testing/backend -q -m "not benchmark" + + frontend: + name: Frontend CI + runs-on: ubuntu-latest + defaults: + run: + working-directory: frontend + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "npm" + cache-dependency-path: frontend/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Run linting and type checking + run: | + npm run typecheck + npm run quality + + - name: Run test suite + run: npm run test + + - name: Build application + run: npm run build