dotnet build #437
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: dotnet build | |
| on: | |
| push: | |
| branches: [ main ] | |
| paths: | |
| - '**.cs' | |
| - '**.csproj' | |
| - '**.yml' | |
| pull_request: | |
| paths: | |
| - '**.cs' | |
| - '**.csproj' | |
| - '**.yml' | |
| workflow_dispatch: | |
| env: | |
| REPODB_MYSQL_CONSTR_SYS: "Server=127.0.0.1;Port=43306;Database=sys;User ID=root;Password=ddd53e85-b15e-4da8-91e5-a7d3b00a0ab2;" | |
| REPODB_ORACLE_CONSTR_MASTER: "Data Source=127.0.0.1:41521/FREEPDB1;User Id=system;Password=oracle;" | |
| REPODB_POSTGRESQL_CONSTR_POSTGRESDB: "Server=127.0.0.1;Port=45432;Database=postgres;User Id=postgres;Password=ddd53e85-b15e-4da8-91e5-a7d3b00a0ab2;" | |
| REPODB_SQLSERVER_CONSTR_MASTER: "Server=tcp:127.0.0.1,41433;Database=master;User ID=sa;Password=ddd53e85-b15e-4da8-91e5-a7d3b00a0ab2;TrustServerCertificate=True;" | |
| jobs: | |
| # Stage 1: Build once (no services needed) | |
| build: | |
| runs-on: ubuntu-latest | |
| services: | |
| sqlserver: | |
| image: mcr.microsoft.com/mssql/server:2022-latest | |
| ports: | |
| - 127.0.0.1:41433:1433 | |
| env: | |
| ACCEPT_EULA: "true" | |
| MSSQL_SA_PASSWORD: ddd53e85-b15e-4da8-91e5-a7d3b00a0ab2 | |
| steps: | |
| - name: Check out repository code | |
| uses: actions/checkout@v6 | |
| - name: Setup DotNet Versions | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: | | |
| 8.0.x | |
| 9.0.x | |
| 10.0.x | |
| - name: build | |
| run: dotnet build -c Release | |
| - name: Run unit tests | |
| run: dotnet test -c Release src/RepoDb.Core.UnitTests src/RepoDb.SqlServer.UnitTests src/RepoDb.PostgreSql.UnitTests src/RepoDb.MySqlConnector.UnitTests src/RepoDb.SQLite.System.UnitTests src/RepoDb.Sqlite.Microsoft.UnitTests --no-build --report-github --report-github-summary-include-passed=false | |
| - name: Run core integration tests | |
| run: dotnet test -c Release src/RepoDb.Core.IntegrationTests --no-build --report-github --report-github-summary-include-passed=false | |
| - name: Run SQLite System integration tests | |
| run: dotnet test -c Release src/RepoDb.SQLite.System.IntegrationTests --no-build --report-github --report-github-summary-include-passed=false | |
| - name: Run SQLite Microsoft integration tests | |
| run: dotnet test -c Release src/RepoDb.Sqlite.Microsoft.IntegrationTests --no-build --report-github --report-github-summary-include-passed=false | |
| - name: Set version variables | |
| id: version | |
| run: | | |
| DATE=$(date +'%Y.%02m%02d') | |
| BUILD_NUM=$(printf "%d" $(( ${{ github.run_number }} % 60000 ))) | |
| echo "version=1.${DATE}.${BUILD_NUM}" >> $GITHUB_OUTPUT | |
| - name: Pack packages | |
| run: dotnet pack -c Release -p:Version="${{ steps.version.outputs.version }}" -p:PackagePrefix=AmpScm. -o release | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: build-output | |
| path: | | |
| **/bin/Release/ | |
| release/ | |
| # Stage 2: Matrix tests across DB providers and versions | |
| test: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - db-provider: sqlserver | |
| image: mcr.microsoft.com/mssql/server:2025-latest | |
| port: 41433 | |
| version: latest | |
| connection-env: REPODB_SQLSERVER_CONSTR_MASTER | |
| - db-provider: sqlserver | |
| image: mcr.microsoft.com/mssql/server:2019-latest | |
| port: 41433 | |
| version: oldest | |
| connection-env: REPODB_SQLSERVER_CONSTR_MASTER | |
| - db-provider: postgresql | |
| image: postgres:17-alpine | |
| port: 45432 | |
| version: latest | |
| connection-env: REPODB_POSTGRESQL_CONSTR_POSTGRESDB | |
| - db-provider: postgresql | |
| image: postgres:13-alpine | |
| port: 45432 | |
| version: oldest | |
| connection-env: REPODB_POSTGRESQL_CONSTR_POSTGRESDB | |
| - db-provider: oracle | |
| image: gvenzl/oracle-free:23-slim-faststart | |
| port: 41521 | |
| version: latest | |
| connection-env: REPODB_ORACLE_CONSTR_MASTER | |
| - db-provider: oracle | |
| image: gvenzl/oracle-free:21-slim-faststart | |
| port: 41521 | |
| version: oldest | |
| connection-env: REPODB_ORACLE_CONSTR_MASTER | |
| services: | |
| database: | |
| image: ${{ matrix.image }} | |
| ports: | |
| - 127.0.0.1:${{ matrix.port }}:${{ matrix.db-provider == 'sqlserver' && '1433' || matrix.db-provider == 'postgresql' && '5432' || matrix.db-provider == 'oracle' && '1521' }} | |
| env: | |
| ACCEPT_EULA: ${{ matrix.db-provider == 'sqlserver' && 'true' || 'false' }} | |
| MSSQL_SA_PASSWORD: ddd53e85-b15e-4da8-91e5-a7d3b00a0ab2 | |
| POSTGRES_PASSWORD: ddd53e85-b15e-4da8-91e5-a7d3b00a0ab2 | |
| ORACLE_PASSWORD: oracle | |
| ORACLE_ALLOW_REMOTE: ${{ matrix.db-provider == 'oracle' && 'true' || 'false' }} | |
| steps: | |
| - name: Check out repository code | |
| uses: actions/checkout@v6 | |
| - name: Setup DotNet Versions | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: | | |
| 8.0.x | |
| 9.0.x | |
| 10.0.x | |
| - name: Download build artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: build-output | |
| - name: Run tests for .Net 10.0 - ${{ matrix.db-provider }} (${{ matrix.version }}) | |
| run: dotnet test -c Release -f net10.0 --no-build --report-github --report-github-summary-include-passed=false | |
| upload-release: | |
| needs: test | |
| runs-on: ubuntu-latest | |
| if: success() | |
| steps: | |
| - name: Download release artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: build-output | |
| path: release | |
| - name: Upload release packages | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: release | |
| path: release/*nupkg | |