diff --git a/.github/workflows/auto-mssql2025-tests.yml b/.github/workflows/auto-mssql2025-tests.yml new file mode 100644 index 000000000..a93dcd0c9 --- /dev/null +++ b/.github/workflows/auto-mssql2025-tests.yml @@ -0,0 +1,148 @@ +name: ⚙📚 Automated MS SQL Server 2025 tests +run-name: Tests on MS SQL Server 2025 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mssql/do-mssql-2025' + - 'Containers/mssql/**.sh' + - 'Containers/mssql/**.sql' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.SqlServer/**' + - '!Orm/Xtensive.Orm.SqlServer/**.csproj' + - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**' + # main test project - any code change + - 'Orm/Xtensive.Orm.Tests/Issues/**' + - 'Orm/Xtensive.Orm.Tests/Storage/**' + - 'Orm/Xtensive.Orm.Tests/Upgrade/**' + # sql tests - general and provider-specific + - 'Orm/Xtensive.Orm.Tests.Sql/**' + - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**' + - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**' + - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**' + - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**' + - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**' + #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**' + - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**' + - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj' + # ability to trigger on demand + - 'TestFileForBuildServerTests.txt' + pull_request: + branches: + - 'master' + paths: + # containers + - 'Containers/mssql/do-mssql-2025' + - 'Containers/mssql/**.sh' + - 'Containers/mssql/**.sql' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.SqlServer/**' + - '!Orm/Xtensive.Orm.SqlServer/**.csproj' + - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**' + # main test project - any code change + - 'Orm/Xtensive.Orm.Tests/Issues/**' + - 'Orm/Xtensive.Orm.Tests/Storage/**' + - 'Orm/Xtensive.Orm.Tests/Upgrade/**' + # sql tests - general and provider-specific + - 'Orm/Xtensive.Orm.Tests.Sql/**' + - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**' + - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**' + - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**' + - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**' + - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**' + #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**' + - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**' + - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj' + # ability to trigger on demand + - 'TestFileForBuildServerTests.txt' + + pull_request_review: + branches: + - 'master' + paths: + # containers + - 'Containers/mssql/do-mssql-2025' + - 'Containers/mssql/**.sh' + - 'Containers/mssql/**.sql' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.SqlServer/**' + - '!Orm/Xtensive.Orm.SqlServer/**.csproj' + - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**' + # main test project - any code change + - 'Orm/Xtensive.Orm.Tests/Issues/**' + - 'Orm/Xtensive.Orm.Tests/Storage/**' + - 'Orm/Xtensive.Orm.Tests/Upgrade/**' + # sql tests - general and provider-specific + - 'Orm/Xtensive.Orm.Tests.Sql/**' + - '!Orm/Xtensive.Orm.Tests.Sql/Firebird/**' + - '!Orm/Xtensive.Orm.Tests.Sql/MySQL/**' + - '!Orm/Xtensive.Orm.Tests.Sql/Oracle/**' + - '!Orm/Xtensive.Orm.Tests.Sql/PostgreSql/**' + - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**' + #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**' + - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**' + - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj' + # ability to trigger on demand + - 'TestFileForBuildServerTests.txt' + +# new commits with the same key will cancel previously run workflows +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + actions: read + checks: write + +jobs: + test_on_mssql2025: + name: Tests on MS SQL Server 2025 + strategy: + matrix: + net: [ 'net8.0' ] + # For security reasons we allow test runs either for pushes from the team or for pull-requests after their changes were seen and approved by someone + # + # push filter - to cover pushes from the team to main branch of major version + # first 'pull_request_review' filter - to cover external pull-requests, since there are major security concerns about content of pull-request we cannot allow auto-runs of tests + # second 'pull_request_review' - to cover internal pull-requests that were not covered by 'on push' trigger + # + if: | + github.event_name == 'push' + || (github.event_name == 'pull_request_review' + && github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + && startsWith(github.event.pull_request.base.ref, 'master') + && github.event.review.state == 'approved') + || (github.event_name == 'pull_request' + && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name + && !startsWith(github.head_ref, 'master-')) + uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master + with: + storage: mssql2025 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 50 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/dispatched-mssql-tests.yml b/.github/workflows/dispatched-mssql-tests.yml index e6dfe586d..b73cb40a2 100644 --- a/.github/workflows/dispatched-mssql-tests.yml +++ b/.github/workflows/dispatched-mssql-tests.yml @@ -28,6 +28,11 @@ on: type: boolean default: false required: true + mssql2022: + description: 'MS SQL Server 2025' + type: boolean + default: true + required: true # new commits with the same key will cancel previously run workflows concurrency: @@ -99,3 +104,23 @@ jobs: run_sql: true run_extensions: true publish_raw_results: true + + test_on_mssql2025: + name: Tests on MS SQL Server 2025 + if: ${{ inputs.mssql2025 }} + strategy: + matrix: + net: [ 'net8.0', 'net10.0' ] + uses: DataObjects-NET/dataobjects-net/.github/workflows/reusable-storage-dependant-tests.yml@master + with: + storage: mssql2025 + build_config: Release + target_framework: ${{ matrix.net }} + specific_sha: ${{ inputs.specific_sha }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} + test_output_verbosity: minimal + test_run_timeout: 50 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: true \ No newline at end of file diff --git a/Containers/mssql/do-mssql-2025 b/Containers/mssql/do-mssql-2025 new file mode 100644 index 000000000..9a7f2e707 --- /dev/null +++ b/Containers/mssql/do-mssql-2025 @@ -0,0 +1,34 @@ +FROM mcr.microsoft.com/mssql/server:2025-latest +USER root + +# See https://github.com/microsoft/mssql-docker/blob/master/linux/preview/examples/mssql-agent-fts-ha-tools/Dockerfile +# for details +RUN export DEBIAN_FRONTEND=noninteractive +RUN apt-get update + +#Actualize time zone database +RUN apt-get install -y tzdata +RUN apt-get install -yq curl +RUN apt-get install -yq apt-transport-https +RUN apt-get install -y gnupg2 +RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - +RUN curl https://packages.microsoft.com/config/ubuntu/24.04/mssql-server-2025.list | tee /etc/apt/sources.list.d/mssql-server.list +RUN apt-get update +RUN apt-get install -y mssql-server-fts +RUN apt-get clean +RUN rm -rf /var/lib/apt/lists + +# Create a config directory +RUN mkdir -p /usr/config +WORKDIR /usr/config + +# Bundle config source +COPY configure-db.sh /usr/config/ +COPY entrypoint.sh /usr/config/ +COPY setup.sql /usr/config/ + +# Grant permissions for to our scripts to be executable +RUN chmod +x /usr/config/entrypoint.sh +RUN chmod +x /usr/config/configure-db.sh + +ENTRYPOINT ["./entrypoint.sh"] \ No newline at end of file diff --git a/Orm/Xtensive.Orm.Tests.Framework/Orm.config b/Orm/Xtensive.Orm.Tests.Framework/Orm.config index f7fce5f36..acd57272e 100644 --- a/Orm/Xtensive.Orm.Tests.Framework/Orm.config +++ b/Orm/Xtensive.Orm.Tests.Framework/Orm.config @@ -17,10 +17,13 @@ - + + + + +