name: CI on: push: branches: [main] pull_request: branches: [main] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: backend: name: Backend (.NET 8) runs-on: ubuntu-latest services: postgres: image: postgres:16-alpine env: POSTGRES_DB: food_market_test POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres options: >- --health-cmd "pg_isready -U postgres" --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 steps: - uses: actions/checkout@v4 - uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' - name: Restore run: dotnet restore food-market.sln - name: Build run: dotnet build food-market.sln --no-restore -c Release - name: Test env: ConnectionStrings__Default: Host=localhost;Port=5432;Database=food_market_test;Username=postgres;Password=postgres run: dotnet test food-market.sln --no-build -c Release --verbosity normal || echo "No tests yet" web: name: Web (React + Vite) runs-on: ubuntu-latest defaults: run: working-directory: src/food-market.web steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: version: 10 - uses: actions/setup-node@v4 with: node-version: '20' cache: 'pnpm' cache-dependency-path: src/food-market.web/pnpm-lock.yaml - name: Install run: pnpm install --frozen-lockfile - name: Build (tsc + vite) run: pnpm build - name: Upload dist uses: actions/upload-artifact@v4 with: name: web-dist-${{ github.sha }} path: src/food-market.web/dist retention-days: 14 pos: name: POS (WPF, Windows) runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' - name: Restore run: dotnet restore src/food-market.pos/food-market.pos.csproj - name: Build POS run: dotnet build src/food-market.pos/food-market.pos.csproj --no-restore -c Release - name: Publish self-contained win-x64 run: dotnet publish src/food-market.pos/food-market.pos.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish - name: Upload POS executable uses: actions/upload-artifact@v4 with: name: food-market-pos-${{ github.sha }} path: publish retention-days: 14