fix(core): key schema fingerprint stamps by fingerprint, not one shared row (weasel#439) #117
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: EF Core CI build | |
| on: | |
| push: | |
| branches: [ master ] | |
| pull_request: | |
| branches: [ master ] | |
| env: | |
| config: Release | |
| DOTNET_CLI_TELEMETRY_OPTOUT: 1 | |
| DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 | |
| db_pwd: P@55w0rd | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| # Oracle takes several minutes to become healthy on the net9.0 leg | |
| timeout-minutes: 45 | |
| strategy: | |
| matrix: | |
| framework: | |
| - net9.0 | |
| - net10.0 | |
| name: EF Core ${{ matrix.framework }} | |
| services: | |
| postgresql: | |
| image: postgres:15.3-alpine | |
| ports: | |
| - 5432:5432 | |
| env: | |
| POSTGRES_USER: postgres | |
| POSTGRES_PASSWORD: postgres | |
| POSTGRES_DB: marten_testing | |
| sqlserver: | |
| image: mcr.microsoft.com/mssql/server:2022-latest | |
| ports: | |
| # the EF Core test suite connects to localhost,1435 (matching docker-compose) | |
| - 1435:1433 | |
| env: | |
| ACCEPT_EULA: Y | |
| SA_PASSWORD: ${{ env.db_pwd }} | |
| mysql: | |
| image: mysql:8.0 | |
| ports: | |
| - 3306:3306 | |
| env: | |
| MYSQL_ROOT_PASSWORD: ${{ env.db_pwd }} | |
| MYSQL_DATABASE: weasel_testing | |
| MYSQL_USER: weasel | |
| MYSQL_PASSWORD: ${{ env.db_pwd }} | |
| options: >- | |
| --health-cmd="mysqladmin ping -h localhost" | |
| --health-interval=10s | |
| --health-timeout=5s | |
| --health-retries=5 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| # Oracle needs the init SQL in docker/oracle mounted to grant the weasel user | |
| # its schema privileges, which a GitHub service container cannot do - so it | |
| # comes up through docker compose, the same way ci-build-oracle.yml does it. | |
| # Only net9.0 needs it: the Oracle EF provider has no net10.0 support, so the | |
| # Oracle test folder is excluded from that build entirely. | |
| - name: Start Oracle via docker-compose | |
| if: matrix.framework == 'net9.0' | |
| run: docker compose up -d oracle | |
| - name: Install .NET | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: | | |
| 9.0.x | |
| 10.0.x | |
| - name: Restore dependencies | |
| run: dotnet restore | |
| - name: Build | |
| run: dotnet build src/Weasel.EntityFrameworkCore.Tests/Weasel.EntityFrameworkCore.Tests.csproj --no-restore --framework ${{ matrix.framework }} | |
| # Waiting here rather than straight after `up -d` lets Oracle warm up during | |
| # the SDK install, restore and build. | |
| - name: Wait for Oracle to be healthy | |
| if: matrix.framework == 'net9.0' | |
| run: | | |
| echo "Waiting for Oracle to be ready..." | |
| timeout 300 bash -c 'until docker compose exec -T oracle healthcheck.sh; do sleep 10; done' | |
| echo "Oracle is ready" | |
| # No test filter: the Oracle and MySql suites are compiled out of the net10.0 | |
| # build (neither provider supports it yet), so each framework runs everything | |
| # it actually built. | |
| - name: Test | |
| run: dotnet test src/Weasel.EntityFrameworkCore.Tests/Weasel.EntityFrameworkCore.Tests.csproj --no-build --verbosity normal --framework ${{ matrix.framework }} | |
| - name: Stop Oracle | |
| if: always() && matrix.framework == 'net9.0' | |
| run: docker compose down |