Skip to content

dotnet build

dotnet build #438

Workflow file for this run

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: pgvector/pgvector:pg18
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