# Build and test on every push/PR. Fixtures read ConnectionStrings__* / # Redis__* directly from environment (see VigilCareRecordsAPI.Tests/Fixtures/ # ApiFixture.cs) against the ports published by docker-compose.yml; MinIO is # left at its docker-compose.yml defaults (localhost:9012, minioadmin/minioadmin, # bucket auto-created on first upload by DocumentStorageService). name: CI on: push: branches: [master] pull_request: branches: [master] jobs: backend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Start dependency stack run: docker compose up -d postgres redis minio - name: Wait for Postgres run: | for i in $(seq 1 60); do docker compose exec -T postgres pg_isready -U postgres && break sleep 2 done docker compose exec -T postgres pg_isready -U postgres - name: Wait for Redis / MinIO run: | for i in $(seq 1 60); do docker compose exec -T redis redis-cli ping 2>/dev/null | grep -q PONG \ && docker compose exec -T minio curl -sf http://localhost:9000/minio/health/live >/dev/null \ && echo "Redis and MinIO are ready" && exit 0 echo "waiting for dependencies ($i)..." sleep 2 done echo "Dependencies failed to become ready" >&2 docker compose ps docker compose logs --tail=50 redis minio exit 1 - name: Create test database run: | docker compose exec -T postgres psql -U postgres -tc "SELECT 1 FROM pg_database WHERE datname='vigilcare_records_test'" \ | grep -q 1 \ || docker compose exec -T postgres psql -U postgres -c "CREATE DATABASE vigilcare_records_test" - name: Setup .NET 8 uses: actions/setup-dotnet@v4 with: dotnet-version: "8.0.x" - name: Restore run: dotnet restore VigilCareRecords.sln - name: Build run: dotnet build VigilCareRecords.sln -c Release --no-restore - name: Test env: ASPNETCORE_ENVIRONMENT: "Testing" run: | dotnet test VigilCareRecords.sln -c Release --no-build \ --logger "trx;LogFileName=test-results.trx" \ --results-directory ./TestResults - name: Publish test results if: always() uses: actions/upload-artifact@v3 with: name: test-results path: ./TestResults - name: Tear down stack if: always() run: docker compose down -v frontend: runs-on: ubuntu-latest container: image: node:22-alpine steps: - uses: actions/checkout@v4 - name: Install working-directory: vigilcare-records-web run: npm ci - name: Test working-directory: vigilcare-records-web run: npm run test:run - name: Build working-directory: vigilcare-records-web run: npm run build