Skip to content

Update dependency FirebirdSql.Data.FirebirdClient to v10 #3800

Update dependency FirebirdSql.Data.FirebirdClient to v10

Update dependency FirebirdSql.Data.FirebirdClient to v10 #3800

Workflow file for this run

name: .NET Core
on:
push:
branches-ignore:
- gh-readonly-queue/**
- renovate/**
pull_request:
merge_group:
jobs:
db:
strategy:
fail-fast: false
matrix:
DB: [SQLite]
# macos: System.Data.SQLite.Core 1.x lacks an arm64 interop lib and so requires an intel macos image. There are
# no latest such images, excepted -large but they require a paying GitHub account. https://github.com/actions/runner-images
# Switching to System.Data.SQLite 2 (without .Core suffix) might allow to run on arm64. See https://system.data.sqlite.org
OS: [ubuntu-latest, windows-latest, macos-26-intel]
include:
- DB: SqlServer2008
CONNECTION_STRING: "Server=localhost;initial catalog=nhibernate;User Id=sa;Password=P@ssw0rd;packet size=4096;"
OS: ubuntu-latest
DB_INIT: |
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=P@ssw0rd" -e "MSSQL_PID=Express" -p 1433:1433 -d --name sqlexpress mcr.microsoft.com/mssql/server:2019-latest;
- DB: SqlServer2008-MicrosoftDataSqlClientDriver
CONNECTION_STRING: "Server=localhost;initial catalog=nhibernate;User Id=sa;Password=P@ssw0rd;packet size=4096;TrustServerCertificate=true;"
OS: ubuntu-latest
DB_INIT: |
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=P@ssw0rd" -e "MSSQL_PID=Express" -p 1433:1433 -d --name sqlexpress mcr.microsoft.com/mssql/server:2019-latest;
# The install creates the SQLEXPRESS instance and gives the sysadmin role to the user that runs the tests.
- DB: SqlServer2008
CONNECTION_STRING: 'Server=(local)\SQLEXPRESS;initial catalog=nhibernate;Integrated Security=SSPI;packet size=4096;'
OS: windows-latest
DB_INIT: |
winget install --source winget --id Microsoft.SQLServer.2022.Express --exact --accept-package-agreements --accept-source-agreements --disable-interactivity
Invoke-Sqlcmd -ServerInstance '(local)\SQLEXPRESS' -TrustServerCertificate -Query 'ALTER DATABASE model SET DELAYED_DURABILITY = FORCED'
- DB: SqlServer2008-MicrosoftDataSqlClientDriver
CONNECTION_STRING: 'Server=(local)\SQLEXPRESS;initial catalog=nhibernate;Integrated Security=SSPI;packet size=4096;TrustServerCertificate=true;'
OS: windows-latest
DB_INIT: |
winget install --source winget --id Microsoft.SQLServer.2022.Express --exact --accept-package-agreements --accept-source-agreements --disable-interactivity
Invoke-Sqlcmd -ServerInstance '(local)\SQLEXPRESS' -TrustServerCertificate -Query 'ALTER DATABASE model SET DELAYED_DURABILITY = FORCED'
- DB: PostgreSQL
CONNECTION_STRING: "Host=localhost;Username=nhibernate;Password=nhibernate;Database=nhibernate;Enlist=true;"
OS: ubuntu-latest
DB_INIT: |
docker run -d -e POSTGRES_USER=nhibernate -e POSTGRES_PASSWORD=nhibernate -e POSTGRES_DB=nhibernate -p 5432:5432 postgres:13
- DB: PostgreSQL
CONNECTION_STRING: "Host=localhost;Username=postgres;Password=nhibernate;Database=nhibernate;Enlist=true;"
OS: windows-latest
DB_INIT: |
winget install --exact --id PostgreSQL.PostgreSQL.13 --silent --disable-interactivity --accept-source-agreements --accept-package-agreements --custom '--superpassword nhibernate'
Add-Content -Path 'C:\Program Files\PostgreSQL\13\data\postgresql.conf' -Value "`r`nmax_prepared_transactions = 100"
Restart-Service 'postgresql-x64-13'
- DB: Firebird
CONNECTION_STRING: "DataSource=localhost;Database=nhibernate;User=SYSDBA;Password=nhibernate;charset=utf8;"
OS: ubuntu-latest
DB_INIT: |
# ISC_INET_SERVER_HOME points the server at the data directory, otherwise it resolves the relative database name under /tmp.
docker run --name firebird -e ISC_INET_SERVER_HOME=/var/lib/firebird/data -e FIREBIRD_CONF_WireCrypt=Enabled -e FIREBIRD_USER=nhibernate -e FIREBIRD_PASSWORD=nhibernate -e FIREBIRD_ROOT_PASSWORD=nhibernate -e FIREBIRD_DATABASE=nhibernate -p 3050:3050 -d firebirdsql/firebird:3
- DB: Firebird4
CONNECTION_STRING: "DataSource=localhost;Database=nhibernate;User=SYSDBA;Password=nhibernate;charset=utf8;"
OS: ubuntu-latest
DB_INIT: |
# ISC_INET_SERVER_HOME points the server at the data directory, otherwise it resolves the relative database name under /tmp.
docker run --name firebird -e ISC_INET_SERVER_HOME=/var/lib/firebird/data -e FIREBIRD_CONF_WireCrypt=Enabled -e FIREBIRD_USER=nhibernate -e FIREBIRD_PASSWORD=nhibernate -e FIREBIRD_ROOT_PASSWORD=nhibernate -e FIREBIRD_DATABASE=nhibernate -p 3050:3050 -d firebirdsql/firebird:4
# Windows runners can only run Windows containers, so the Linux Firebird image cannot be reused here.
# MaxUnflushedWrites and MaxUnflushedWriteTime default to -1 everywhere but Windows, where they make the
# engine flush the whole database file every 100 commits and every 5 seconds.
- DB: Firebird
CONNECTION_STRING: "DataSource=localhost;Database=nhibernate;User=SYSDBA;Password=nhibernate;charset=utf8;"
OS: windows-latest
DB_INIT: |
winget install --exact --id FirebirdProject.Firebird.3 --silent --disable-interactivity --accept-source-agreements --accept-package-agreements --custom '/SUPPRESSMSGBOXES /DIR=C:\firebird /SYSDBAPASSWORD=nhibernate'
Add-Content -Path 'C:\firebird\databases.conf' -Value "`r`nnhibernate = C:\firebird\nhibernate.fdb`r`n{`r`n MaxUnflushedWrites = -1`r`n MaxUnflushedWriteTime = -1`r`n}"
Restart-Service FirebirdServerDefaultInstance
- DB: Firebird4
CONNECTION_STRING: "DataSource=localhost;Database=nhibernate;User=SYSDBA;Password=nhibernate;charset=utf8;"
OS: windows-latest
DB_INIT: |
winget install --exact --id FirebirdProject.Firebird.4 --silent --disable-interactivity --accept-source-agreements --accept-package-agreements --custom '/SUPPRESSMSGBOXES /DIR=C:\firebird /SYSDBAPASSWORD=nhibernate'
Add-Content -Path 'C:\firebird\databases.conf' -Value "`r`nnhibernate = C:\firebird\nhibernate.fdb`r`n{`r`n MaxUnflushedWrites = -1`r`n MaxUnflushedWriteTime = -1`r`n}"
Restart-Service FirebirdServerDefaultInstance
- DB: MySQL
CONNECTION_STRING: "Server=localhost;Uid=root;Password=nhibernate;Database=nhibernate;SslMode=none;AllowPublicKeyRetrieval=true;"
OS: ubuntu-latest
DB_INIT: |
sudo service mysql stop
docker run --name mysql -e MYSQL_ROOT_PASSWORD=nhibernate -e MYSQL_USER=nhibernate -e MYSQL_PASSWORD=nhibernate -e MYSQL_DATABASE=nhibernate -p 3306:3306 --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 -d mysql:8.4 mysqld --lower_case_table_names=1 --character-set-server=utf8 --collation-server=utf8_general_ci --skip-log-bin --innodb-flush-log-at-trx-commit=2
- DB: MySQL
CONNECTION_STRING: "Server=127.0.0.1;Uid=root;Database=nhibernate;SslMode=none;CharSet=utf8;"
OS: windows-latest
DB_INIT: |
# The 8.4 LTS series, as the Linux job.
$mysql = 'C:\Program Files\MySQL\MySQL Server 8.4'
winget install --exact --id Oracle.MySQL --version 8.4.9 --silent --disable-interactivity --accept-source-agreements --accept-package-agreements
# The MSI installs the files only.
# The tests do not need the safety, and one file for all the tables makes the DDL faster on NTFS.
Set-Content "$mysql\my.ini" @('[mysqld]', 'skip_log_bin', 'innodb_flush_log_at_trx_commit=2', 'innodb_doublewrite=0', 'innodb_file_per_table=0', 'performance_schema=0')
cd "$mysql\bin"
./mysqld --initialize-insecure
./mysqld --install MySQL
Start-Service MySQL
./mysql --user=root -e 'CREATE DATABASE nhibernate CHARACTER SET utf8 COLLATE utf8_general_ci;'
- DB: Oracle
CONNECTION_STRING: "User ID=nhibernate;Password=nhibernate;Metadata Pooling=false;Self Tuning=false;Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XEPDB1)))"
OS: ubuntu-latest
DB_INIT: |
docker run -d -p 1521:1521 -e APP_USER=nhibernate -e APP_USER_PASSWORD=nhibernate -e ORACLE_PASSWORD=nhibernate gvenzl/oracle-xe:21-slim
runs-on: ${{matrix.OS}}
continue-on-error: ${{matrix.ALLOW_FAILURE == true}}
env:
LANG: en-US.UTF-8 #default POSIX locale doesn't support ignore case comparisons
name: ${{matrix.DB}} - ${{matrix.OS}}
steps:
- name: Set up ${{matrix.DB}}
run: ${{matrix.DB_INIT}}
- name: Checkout
uses: actions/checkout@v7
with:
show-progress: false
- name: Set up .NET
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
- name: Build and Test
run: |
pwsh -noprofile -command "& ./build.ps1 -TaskList Set-Configuration,Test -properties @{'Database' = '${{matrix.DB}}';'ConnectionString'='${{matrix.CONNECTION_STRING}}'}"
test-results:
needs: db
if: always()
runs-on: ubuntu-latest
name: Test results
steps:
- name: Check the test results
run: '[ "${{needs.db.result}}" = "success" ] || exit 1'