name: CI on: push: branches: [ main, develop ] pull_request: branches: [ main, develop ] jobs: backend-test: runs-on: ubuntu-latest services: postgres: image: postgres:15-alpine env: POSTGRES_USER: test POSTGRES_PASSWORD: test POSTGRES_DB: test_db options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: Cache pip packages uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} restore-keys: | ${{ runner.os }}-pip- - name: Install dependencies run: | cd backend python -m pip install --upgrade pip pip install -r requirements/dev.txt - name: Lint with flake8 run: | cd backend flake8 app tests --count --select=E9,F63,F7,F82 --show-source --statistics flake8 app tests --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Run tests env: DATABASE_URL: postgresql://test:test@localhost:5432/test_db SECRET_KEY: test-secret-key JWT_SECRET_KEY: test-jwt-secret FLASK_ENV: testing run: | cd backend pytest --cov=app --cov-report=xml --cov-report=term - name: Upload coverage uses: codecov/codecov-action@v3 with: files: ./backend/coverage.xml flags: backend name: backend-coverage frontend-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '18' cache: 'npm' cache-dependency-path: frontend/package-lock.json - name: Install dependencies run: | cd frontend npm ci - name: Lint run: | cd frontend npm run lint - name: Run tests run: | cd frontend npm test -- --run --coverage - name: Upload coverage uses: codecov/codecov-action@v3 with: files: ./frontend/coverage/coverage-final.json flags: frontend name: frontend-coverage build: runs-on: ubuntu-latest needs: [backend-test, frontend-test] steps: - uses: actions/checkout@v3 - name: Build backend run: | cd backend docker build -t crafting-shop-backend:test . - name: Build frontend run: | cd frontend docker build -t crafting-shop-frontend:test .