name: CI on: push: branches: [ master, develop ] pull_request: branches: [ master, develop ] jobs: backend-tests: name: Backend Tests runs-on: docker steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: Cache pip dependencies uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('backend/requirements.txt') }} restore-keys: | ${{ runner.os }}-pip- - name: Install backend dependencies working-directory: ./backend run: | python -m pip install --upgrade pip pip install -r requirements.txt - name: Run backend tests working-directory: ./backend run: | python -m pytest test_automated.py -v - name: Run backend tests with pytest directly working-directory: ./backend run: | python -m pytest -v backend-build: name: Backend Build runs-on: docker needs: backend-tests steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: Install backend dependencies working-directory: ./backend run: | python -m pip install --upgrade pip pip install -r requirements.txt - name: Test backend import working-directory: ./backend run: | python -c "import main; print('Backend imports successfully')" - name: Test backend startup working-directory: ./backend run: | timeout 10s python main.py || true echo "Backend startup test completed" frontend-build: name: Frontend Build runs-on: docker steps: - name: Checkout code 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 frontend dependencies working-directory: ./frontend run: npm ci - name: Run frontend type check working-directory: ./frontend run: npm run type-check - name: Run frontend lint working-directory: ./frontend run: npm run lint - name: Build frontend working-directory: ./frontend run: npm run build - name: Test frontend build output working-directory: ./frontend run: | if [ -d "dist" ]; then echo "Frontend build successful - dist directory created" ls -la dist/ else echo "Frontend build failed - dist directory not found" exit 1 fi docker-build: name: Docker Build Test runs-on: docker needs: [backend-tests, frontend-build] steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Test backend Docker build working-directory: ./backend run: | docker build -t tschunkorder-backend-test . echo "Backend Docker build successful" - name: Test frontend Docker build working-directory: ./frontend run: | docker build -t tschunkorder-frontend-test . echo "Frontend Docker build successful" - name: Test docker-compose build run: | docker-compose build echo "Docker Compose build successful"