diff --git a/.github/actions/run-database-tests/action.yml b/.github/actions/run-database-tests/action.yml index f731ca4ca6..0cd4bafb42 100644 --- a/.github/actions/run-database-tests/action.yml +++ b/.github/actions/run-database-tests/action.yml @@ -7,6 +7,11 @@ inputs: required: true default: 'Release' type: string + show_all_fails: + description: 'No mute tests' + type: boolean + default: false + required: true test_output_verbosity: description: 'Verbosity for dotnet test command' required: true @@ -36,21 +41,29 @@ runs: using: "composite" steps: - name: Test Orm.Tests set of tests + env: + GA_NO_IGNORE: ${{ inputs.show_all_fails }} if: ${{ !cancelled() && fromJSON(inputs.run_main) }} shell: bash run: dotnet test Orm/Xtensive.Orm.Tests/Xtensive.Orm.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Tests.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }} - name: Test Orm.Tests.Sql set of tests + env: + GA_NO_IGNORE: ${{ inputs.show_all_fails }} if: ${{ !cancelled() && fromJSON(inputs.run_sql) }} shell: bash run: dotnet test Orm/Xtensive.Orm.Tests.Sql/Xtensive.Orm.Tests.Sql.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Tests.Sql.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }} - name: Test BulkOperations extension set of tests + env: + GA_NO_IGNORE: ${{ inputs.show_all_fails }} if: ${{ !cancelled() && fromJSON(inputs.run_extensions) }} shell: bash run: dotnet test Extensions/Xtensive.Orm.BulkOperations.Tests/Xtensive.Orm.BulkOperations.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.BulkOperations.Tests.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }} - name: Test Localization extension set of tests + env: + GA_NO_IGNORE: ${{ inputs.show_all_fails }} if: ${{ !cancelled() && fromJSON(inputs.run_extensions) }} shell: bash run: dotnet test Extensions/Xtensive.Orm.Localization.Tests/Xtensive.Orm.Localization.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Localization.Tests.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }} @@ -60,11 +73,15 @@ runs: # step. To not disturb normal tests execution Reprocessing tests moved outside the action. - name: Test Security extension set of tests + env: + GA_NO_IGNORE: ${{ inputs.show_all_fails }} if: ${{ !cancelled() && fromJSON(inputs.run_extensions) }} shell: bash run: dotnet test Extensions/Xtensive.Orm.Security.Tests/Xtensive.Orm.Security.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Security.Tests.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }} - name: Test Tracking extension set of tests + env: + GA_NO_IGNORE: ${{ inputs.show_all_fails }} if: ${{ !cancelled() && fromJSON(inputs.run_extensions) }} shell: bash run: dotnet test Extensions/Xtensive.Orm.Tracking.Tests/Xtensive.Orm.Tracking.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Tracking.Tests.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }} \ No newline at end of file diff --git a/.github/scripts/delete_workflow_runs.ps1 b/.github/scripts/delete_workflow_runs.ps1 new file mode 100644 index 0000000000..b2f47aca77 --- /dev/null +++ b/.github/scripts/delete_workflow_runs.ps1 @@ -0,0 +1,240 @@ +param( + [Parameter(Mandatory)] + [string] $repo, + [Parameter(Mandatory)] + [string] $token, + [Parameter(Mandatory)] + [string] $keepDays +) + +$baseUri = "https://api.github.com" +$repoBaseUri = "$baseUri/repos/$repo" +$actionsBaseUri = "$repoBaseUri/actions" +$runsBaseUri = "$actionsBaseUri/runs" + +$headers = @{ + Authorization = "Bearer $token" + Accept = "application/vnd.github+json" +} + +function Get() { + param( + [string] $uri + ) + return Invoke-RestMethod -Uri $uri -Headers $headers -Method Get +} + +function DeleteRuns() { + param ( + [System.Collections.ArrayList] $runIds + ) + + foreach ($id in $runIds) { + Write-Host "Deleting run $id" + $deleteUri = "$runsBaseUri/$id" + Invoke-RestMethod -Uri $deleteUri -Headers $headers -Method Delete + } +} + +# +# Gets all workflow runs, finds among them the ones that meet deletion requirements +# (inactive workflow, closed pull-request or older than required days) +# and sorts them into several buckets - "inactive", "pull_request", "workflow_dispatch", "push" +# and "schedule" +# +function GetWorkflowRunsForDeletion() +{ + [OutputType([System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]])] + param ( + [System.Int32] $storeDays + ) + + [System.Collections.Generic.HashSet[int]]$inactiveWorkflows = New-Object System.Collections.Generic.HashSet[int] + + $allWorkflows = Invoke-RestMethod -Uri "$actionsBaseUri/workflows" -Headers $headers -Method Get + + # number of workflows is less then number of runs + # so more efficient to get them all and find inactive ones + foreach ($wf in $allWorkflows.workflows) { + if ($wf.state -ne "active") { + $inactiveWorkflows.Add($wf.id) | Out-Null; + } + } + + [System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]]$result = New-Object System.Collections.Generic.Dictionary"[System.String, System.Collections.ArrayList]" + + #keys of the dictionary equal to events of workflows + $result["pull_request"] = New-Object System.Collections.ArrayList + $result["workflow_dispatch"] = New-Object System.Collections.ArrayList + $result["push"] = New-Object System.Collections.ArrayList + $result["schedule"] = New-Object System.Collections.ArrayList + #special bucket + $result["inactive"] = New-Object System.Collections.ArrayList + + + $page = 1 + $per_page = 100 + + do { + $uri = "$runsBaseUri" + "?page=$page&per_page=$per_page" + $response = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get + + if ($response.total_count -eq 0) { + return $result + } + + [System.DateTime]$created = (Get-Date).AddDays(-$storeDays) + + foreach ($run in $response.workflow_runs) { + if ($result.ContainsKey($run.event) -eq $true) { + # Doesn't matter how old the run is - if the workflow is inactive + # put it for deletion + if ($inactiveWorkflows.Contains($run.workflow_id)) { + $result["inactive"].Add($run) | Out-Null + } + else { + if ($run.event -eq "pull_request") { + # for PRs we collect only closed ones + if ($run.pull_requests.Count -eq 0) { + $result[$run.event].Add($run) | Out-Null + } + } + else { + # for the rest, we apply date filter + $created_at = [System.DateTime]::Parse($run.created_at) + if ($created_at -lt $created) { + $result[$run.event].Add($run) | Out-Null + } + } + } + } + } + + $page++ + } while ($response.workflow_runs.Count -eq $per_page) + + return $result +} + +# +# Deletes runs of inactive workflows (of pull_request, push, workflow_dispatch or schedule event) +# +function DeleteRunsOfInactiveWorkflows() { + param ( + [System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]] $groups + ) + + [System.Collections.ArrayList]$runs = $groups["inactive"] + + if ($runs.Count -eq 0) { + Write-Host "No runs of inactive workflows. Skipping" + return + } + + Write-Host "Deleting runs of inactive workflows" + $run_ids = $runs | Select-Object -ExpandProperty id + DeleteRuns $run_ids +} + +# +# Deletes runs of closed pull-requests +# +function DeleteRunsForClosedPR() { + param ( + [System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]] $groups + ) + + [System.Collections.ArrayList]$runs = $groups["pull_request"] + + if ($runs.Count -eq 0) { + Write-Host "No runs for closed pull requests. Skipping" + return + } + + Write-Host "Deleting runs for closed pull requests" + $run_ids = $runs | Select-Object -ExpandProperty id + DeleteRuns $run_ids +} + +# +# Deletes runs of 'workflow_dispatch' event marked for deletion +# +function DeleteOldDispatchedRuns() { + param ( + [System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]] $groups + ) + + [System.Collections.ArrayList]$runs = $groups["workflow_dispatch"] + + if ($runs.Count -eq 0) { + Write-Host "No dispatched runs to delete. Skipping" + return + } + + Write-Host "Deleting old runs that were dispatched" + $run_ids = $runs | Select-Object -ExpandProperty id + DeleteRuns $run_ids +} + +# +# Deletes runs of 'push' event marked for deletion +# +function DeleteOldRunsOnPush() { + param ( + [System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]] $groups + ) + + [System.Collections.ArrayList]$runs = $groups["push"] + + if ($runs.Count -eq 0) { + Write-Host "No runs triggered by push to delete. Skipping" + return + } + + Write-Host "Deleting old runs triggered by push" + $run_ids = $runs | Select-Object -ExpandProperty id + DeleteRuns $run_ids +} + +# +# Deletes runs of 'schedule' event marked for deletion +# +function DeleteOldScheduledRuns() { + param ( + [System.Collections.Generic.Dictionary[System.String, System.Collections.ArrayList]] $groups + ) + + [System.Collections.ArrayList]$runs = $groups["schedule"] + + if ($runs.Count -eq 0) { + Write-Host "No scheduled runs to delete. Skipping" + return + } + + Write-Host "Deleting old runs triggered on schedule" + $run_ids = $runs | Select-Object -ExpandProperty id + DeleteRuns $run_ids +} + +Write-Host "Collecting runs for closed PRs, inactive workflow runs, and other runs older than $keepDays days" + +$preserveDays = [System.Int32]::Parse($keepDays) + +$runsForDeletion = GetWorkflowRunsForDeletion $preserveDays + +if ($runsForDeletion.ToString() -eq "System.Object[]") +{ + # just in case somebody screws up method and forgot to apply out-null to some operation + # and results of method became array of objects + $runsForDeletion = $runsForDeletion[$runsForDeletion.Length - 1]; +} + +DeleteRunsOfInactiveWorkflows $runsForDeletion + +DeleteRunsForClosedPR $runsForDeletion + +DeleteOldDispatchedRuns $runsForDeletion + +DeleteOldRunsOnPush $runsForDeletion + +DeleteOldScheduledRuns $runsForDeletion \ No newline at end of file diff --git a/.github/workflows/auto-databaseless-tests.yml b/.github/workflows/auto-databaseless-tests.yml new file mode 100644 index 0000000000..9915c99e8a --- /dev/null +++ b/.github/workflows/auto-databaseless-tests.yml @@ -0,0 +1,129 @@ +name: βš™ Automated no-database tests +run-name: Core tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # extensions + - 'Extensions/Xtensive.Orm.Logging.log4net/**' + - '!Extensions/Xtensive.Orm.Logging.log4net/NuGetContent/**' + - '!Extensions/Xtensive.Orm.Logging.log4net/**.csproj' + - 'Extensions/Xtensive.Orm.Logging.log4net.Tests/**' + - '!Extensions/Xtensive.Orm.Logging.log4net.Tests/**.csproj' + - 'Extensions/Xtensive.Orm.Logging.NLog/**' + - '!Extensions/Xtensive.Orm.Logging.NLog/NuGetContent/**' + - '!Extensions/Xtensive.Orm.Logging.NLog/**.csproj' + - 'Extensions/Xtensive.Orm.Logging.NLog.Tests/**' + - '!Extensions/Xtensive.Orm.Logging.NLog.Tests/**.csproj' + # main project + - 'Orm/Xtensive.Orm/Arithmetics/**' + - 'Orm/Xtensive.Orm/Caching/**' + - 'Orm/Xtensive.Orm/Collections/**' + - 'Orm/Xtensive.Orm/Comparison/**' + - 'Orm/Xtensive.Orm/Conversion/**' + - 'Orm/Xtensive.Orm/Ioc/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Tuples/**' + # ability to trigger on demand + - 'TestFileForBuildServerTests.txt' + + pull_request: + branches: + - 'master' + paths: + # extensions + - 'Extensions/Xtensive.Orm.Logging.log4net/**' + - '!Extensions/Xtensive.Orm.Logging.log4net/NuGetContent/**' + - '!Extensions/Xtensive.Orm.Logging.log4net/**.csproj' + - 'Extensions/Xtensive.Orm.Logging.log4net.Tests/**' + - '!Extensions/Xtensive.Orm.Logging.log4net.Tests/**.csproj' + - 'Extensions/Xtensive.Orm.Logging.NLog/**' + - '!Extensions/Xtensive.Orm.Logging.NLog/NuGetContent/**' + - '!Extensions/Xtensive.Orm.Logging.NLog/**.csproj' + - 'Extensions/Xtensive.Orm.Logging.NLog.Tests/**' + - '!Extensions/Xtensive.Orm.Logging.NLog.Tests/**.csproj' + # main project + - 'Orm/Xtensive.Orm/Arithmetics/**' + - 'Orm/Xtensive.Orm/Caching/**' + - 'Orm/Xtensive.Orm/Collections/**' + - 'Orm/Xtensive.Orm/Comparison/**' + - 'Orm/Xtensive.Orm/Conversion/**' + - 'Orm/Xtensive.Orm/Ioc/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Tuples/**' + # ability to trigger on demand + - 'TestFileForBuildServerTests.txt' + + pull_request_review: + branches: + - 'master' + paths: + # extensions + - 'Extensions/Xtensive.Orm.Logging.log4net/**' + - '!Extensions/Xtensive.Orm.Logging.log4net/NuGetContent/**' + - '!Extensions/Xtensive.Orm.Logging.log4net/**.csproj' + - 'Extensions/Xtensive.Orm.Logging.log4net.Tests/**' + - '!Extensions/Xtensive.Orm.Logging.log4net.Tests/**.csproj' + - 'Extensions/Xtensive.Orm.Logging.NLog/**' + - '!Extensions/Xtensive.Orm.Logging.NLog/NuGetContent/**' + - '!Extensions/Xtensive.Orm.Logging.NLog/**.csproj' + - 'Extensions/Xtensive.Orm.Logging.NLog.Tests/**' + - '!Extensions/Xtensive.Orm.Logging.NLog.Tests/**.csproj' + # main project + - 'Orm/Xtensive.Orm/Arithmetics/**' + - 'Orm/Xtensive.Orm/Caching/**' + - 'Orm/Xtensive.Orm/Collections/**' + - 'Orm/Xtensive.Orm/Comparison/**' + - 'Orm/Xtensive.Orm/Conversion/**' + - 'Orm/Xtensive.Orm/Ioc/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Tuples/**' + # 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: + databaseless_tests: + name: Core Tests + strategy: + matrix: + net: [ 'net6.0', 'net7.0', '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-independant-tests.yml@master + with: + storage: sqlite3 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 10 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-firebird3-tests.yml b/.github/workflows/auto-firebird3-tests.yml new file mode 100644 index 0000000000..ce1ac6e209 --- /dev/null +++ b/.github/workflows/auto-firebird3-tests.yml @@ -0,0 +1,182 @@ +name: βš™πŸ¦ Automated Firebird 3 tests +run-name: Tests on Firebird 3 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/firebird/do-firebird-3_0' + - 'Containers/firebird/**.sh' + - 'Containers/firebird/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.Firebird/**' + - '!Orm/Xtensive.Orm.Firebird/**.csproj' + - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**' + # main test project - only most significant parts + - '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/firebird/do-firebird-3_0' + - 'Containers/firebird/**.sh' + - 'Containers/firebird/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.Firebird/**' + - '!Orm/Xtensive.Orm.Firebird/**.csproj' + - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**' + # main test project - only most significant parts + - '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/firebird/do-firebird-3_0' + - 'Containers/firebird/**.sh' + - 'Containers/firebird/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.Firebird/**' + - '!Orm/Xtensive.Orm.Firebird/**.csproj' + - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**' + # main test project - only most significant parts + - '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_firebird30: + name: Tests on Firebird 3 + strategy: + matrix: + net: [ 'net5.0', 'net6.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: firebird30 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-firebird4-tests.yml b/.github/workflows/auto-firebird4-tests.yml new file mode 100644 index 0000000000..19e7b269c2 --- /dev/null +++ b/.github/workflows/auto-firebird4-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ¦ Automated Firebird 4 tests +run-name: Tests on Firebird 4 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/firebird/do-firebird-4_0' + - 'Containers/firebird/**.sh' + - 'Containers/firebird/**.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.Firebird/**' + - '!Orm/Xtensive.Orm.Firebird/**.csproj' + - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**' + # main test project - only most significant parts + - '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/firebird/do-firebird-4_0' + - 'Containers/firebird/**.sh' + - 'Containers/firebird/**.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.Firebird/**' + - '!Orm/Xtensive.Orm.Firebird/**.csproj' + - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**' + # main test project - only most significant parts + - '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/firebird/do-firebird-4_0' + - 'Containers/firebird/**.sh' + - 'Containers/firebird/**.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.Firebird/**' + - '!Orm/Xtensive.Orm.Firebird/**.csproj' + - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**' + # main test project - only most significant parts + - '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_firebird40: + name: Tests on Firebird 4 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: firebird40 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-firebird5-tests.yml b/.github/workflows/auto-firebird5-tests.yml new file mode 100644 index 0000000000..9b3afb5188 --- /dev/null +++ b/.github/workflows/auto-firebird5-tests.yml @@ -0,0 +1,182 @@ +name: βš™πŸ¦ Automated Firebird 5 tests +run-name: Tests on Firebird 5 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/firebird/do-firebird-5_0' + - 'Containers/firebird/**.sh' + - 'Containers/firebird/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.Firebird/**' + - '!Orm/Xtensive.Orm.Firebird/**.csproj' + - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**' + # main test project - only most significant parts + - '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/firebird/do-firebird-5_0' + - 'Containers/firebird/**.sh' + - 'Containers/firebird/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.Firebird/**' + - '!Orm/Xtensive.Orm.Firebird/**.csproj' + - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**' + # main test project - only most significant parts + - '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/firebird/do-firebird-5_0' + - 'Containers/firebird/**.sh' + - 'Containers/firebird/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.Firebird/**' + - '!Orm/Xtensive.Orm.Firebird/**.csproj' + - '!Orm/Xtensive.Orm.Firebird/NuGetContent/**' + # main test project - only most significant parts + - '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_firebird50: + name: Tests on Firebird 5 + strategy: + matrix: + net: [ 'net6.0', 'net7.0', '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: firebird50 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-mssql2017-tests.yml b/.github/workflows/auto-mssql2017-tests.yml new file mode 100644 index 0000000000..3abf4f099f --- /dev/null +++ b/.github/workflows/auto-mssql2017-tests.yml @@ -0,0 +1,148 @@ +name: βš™πŸ“š Automated MS SQL Server 2017 tests +run-name: Tests on MS SQL Server 2017 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mssql/do-mssql-2017' + - '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/PosgreSql/**' + - '!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-2017' + - '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/PosgreSql/**' + - '!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-2017' + - '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/PosgreSql/**' + - '!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_mssql2017: + name: Tests on MS SQL Server 2017 + 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: mssql2017 + 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/auto-mssql2019-tests.yml b/.github/workflows/auto-mssql2019-tests.yml new file mode 100644 index 0000000000..d5043d8749 --- /dev/null +++ b/.github/workflows/auto-mssql2019-tests.yml @@ -0,0 +1,173 @@ +name: βš™πŸ“šπŸ”… Automated MS SQL Server 2019 tests +run-name: Tests on MS SQL Server 2019 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mssql/do-mssql-2019' + - 'Containers/mssql/**.sh' + - 'Containers/mssql/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + #main project + - 'Orm/Xtensive.Orm/**' + - '!Orm/Xtensive.Orm/**.csproj' + # provider + - 'Orm/Xtensive.Orm.SqlServer/**' + - '!Orm/Xtensive.Orm.SqlServer/**.csproj' + - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**' + # tests framework + - 'Orm/Xtensive.Orm.Framework/**' + - '!Orm/Xtensive.Orm.Framework/**.csproj' + # main test project - any code change + - 'Orm/Xtensive.Orm.Tests/**' + - '!Orm/Xtensive.Orm.Tests/**.csproj' + # 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/PosgreSql/**' + - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**' + #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**' + - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**' + - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj' + # weaver changes + - 'Weaver/**' + # ability to trigger on demand + - 'TestFileForBuildServerTests.txt' + + pull_request: + branches: + - 'master' + paths: + # containers + - 'Containers/mssql/do-mssql-2019' + - 'Containers/mssql/**.sh' + - 'Containers/mssql/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + #main project + - 'Orm/Xtensive.Orm/**' + - '!Orm/Xtensive.Orm/**.csproj' + # provider + - 'Orm/Xtensive.Orm.SqlServer/**' + - '!Orm/Xtensive.Orm.SqlServer/**.csproj' + - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**' + # tests framework + - 'Orm/Xtensive.Orm.Framework/**' + - '!Orm/Xtensive.Orm.Framework/**.csproj' + # main test project - any code change + - 'Orm/Xtensive.Orm.Tests/**' + - '!Orm/Xtensive.Orm.Tests/**.csproj' + # 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/PosgreSql/**' + - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**' + #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**' + - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**' + - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj' + # weaver changes + - 'Weaver/**' + # ability to trigger on demand + - 'TestFileForBuildServerTests.txt' + + pull_request_review: + branches: + - 'master' + paths: + # containers + - 'Containers/mssql/do-mssql-2019' + - 'Containers/mssql/**.sh' + - 'Containers/mssql/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + #main project + - 'Orm/Xtensive.Orm/**' + - '!Orm/Xtensive.Orm/**.csproj' + # provider + - 'Orm/Xtensive.Orm.SqlServer/**' + - '!Orm/Xtensive.Orm.SqlServer/**.csproj' + - '!Orm/Xtensive.Orm.SqlServer/NuGetContent/**' + # tests framework + - 'Orm/Xtensive.Orm.Framework/**' + - '!Orm/Xtensive.Orm.Framework/**.csproj' + # main test project - any code change + - 'Orm/Xtensive.Orm.Tests/**' + - '!Orm/Xtensive.Orm.Tests/**.csproj' + # 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/PosgreSql/**' + - '!Orm/Xtensive.Orm.Tests.Sql/Sqlite/**' + #- '!Orm/Xtensive.Orm.Tests.Sql/SqlServer/**' + - '!Orm/Xtensive.Orm.Tests.Sql/SqlServerCe/**' + - '!Orm/Xtensive.Orm.Tests.Sql/**.csproj' + # weaver changes + - 'Weaver/**' + # 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_mssql2019: + name: Tests on MS SQL Server 2019 + strategy: + matrix: + net: [ 'net6.0', 'net7.0', '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: mssql2019 + 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/auto-mssql2022-tests.yml b/.github/workflows/auto-mssql2022-tests.yml new file mode 100644 index 0000000000..b99b99ab62 --- /dev/null +++ b/.github/workflows/auto-mssql2022-tests.yml @@ -0,0 +1,148 @@ +name: βš™πŸ“š Automated MS SQL Server 2022 tests +run-name: Tests on MS SQL Server 2022 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mssql/do-mssql-2022' + - '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/PosgreSql/**' + - '!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-2022' + - '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/PosgreSql/**' + - '!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-2022' + - '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/PosgreSql/**' + - '!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_mssql2022: + name: Tests on MS SQL Server 2022 + 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: mssql2022 + 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/auto-mysql56-tests.yml b/.github/workflows/auto-mysql56-tests.yml new file mode 100644 index 0000000000..fd6c965687 --- /dev/null +++ b/.github/workflows/auto-mysql56-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ¬ Automated MySQL 5.6 tests +run-name: Tests on MySQL 5.6 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mysql/do-mysql-5_6' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-5_6' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-5_6' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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_mysql56: + name: Tests on MySQL 5.6 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: mysql56 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-mysql57-tests.yml b/.github/workflows/auto-mysql57-tests.yml new file mode 100644 index 0000000000..25081d6d55 --- /dev/null +++ b/.github/workflows/auto-mysql57-tests.yml @@ -0,0 +1,179 @@ +name: βš™πŸ¬πŸ”… Automated MySQL 5.7 tests +run-name: Tests on MySQL 5.7 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + - 'Containers/mysql/do-mysql-5_7' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.cnf' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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/mysql/do-mysql-5_7' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.cnf' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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/mysql/do-mysql-5_7' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.cnf' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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_mysql57: + name: Tests on MySQL 5.7 + strategy: + matrix: + net: [ 'net6.0', 'net7.0', '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: mysql57 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-mysql80-tests.yml b/.github/workflows/auto-mysql80-tests.yml new file mode 100644 index 0000000000..d80435e8b2 --- /dev/null +++ b/.github/workflows/auto-mysql80-tests.yml @@ -0,0 +1,182 @@ +name: βš™πŸ¬πŸ”… Automated MySQL 8.0 tests +run-name: Tests on MySQL 8.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mysql/do-mysql-8_0' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + #provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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/mysql/do-mysql-8_0' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + #provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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/mysql/do-mysql-8_0' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + #provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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_mysql80: + name: Tests on MySQL 8.0 + strategy: + matrix: + net: [ 'net6.0', 'net7.0', '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: mysql80 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-mysql81-tests.yml b/.github/workflows/auto-mysql81-tests.yml new file mode 100644 index 0000000000..7439a441e6 --- /dev/null +++ b/.github/workflows/auto-mysql81-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ¬ Automated MySQL 8.1 tests +run-name: Tests on MySQL 8.1 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mysql/do-mysql-8_1' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-8_1' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-8_1' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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_mysql81: + name: Tests on MySQL 8.1 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: mysql81 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-mysql82-tests.yml b/.github/workflows/auto-mysql82-tests.yml new file mode 100644 index 0000000000..54d29055cf --- /dev/null +++ b/.github/workflows/auto-mysql82-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ¬ Automated MySQL 8.2 tests +run-name: Tests on MySQL 8.2 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mysql/do-mysql-8_2' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-8_2' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-8_2' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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_mysql82: + name: Tests on MySQL 8.2 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: mysql82 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-mysql83-tests.yml b/.github/workflows/auto-mysql83-tests.yml new file mode 100644 index 0000000000..48de399e14 --- /dev/null +++ b/.github/workflows/auto-mysql83-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ¬ Automated MySQL 8.3 tests +run-name: Tests on MySQL 8.3 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mysql/do-mysql-8_3' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-8_3' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-8_3' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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_mysql83: + name: Tests on MySQL 8.3 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: mysql83 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-mysql84-tests.yml b/.github/workflows/auto-mysql84-tests.yml new file mode 100644 index 0000000000..f195fff149 --- /dev/null +++ b/.github/workflows/auto-mysql84-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ¬ Automated MySQL 8.4 tests +run-name: Tests on MySQL 8.4 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mysql/do-mysql-8_4' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-8_4' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-8_4' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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_mysql84: + name: Tests on MySQL 8.4 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: mysql84 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-mysql90-tests.yml b/.github/workflows/auto-mysql90-tests.yml new file mode 100644 index 0000000000..d2238071f6 --- /dev/null +++ b/.github/workflows/auto-mysql90-tests.yml @@ -0,0 +1,182 @@ +name: βš™πŸ¬πŸ”… Automated MySQL 9.0 tests +run-name: Tests on MySQL 9.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mysql/do-mysql-9_0' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + #provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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/mysql/do-mysql-9_0' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + #provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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/mysql/do-mysql-9_0' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + #provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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_mysql90: + name: Tests on MySQL 9.0 + strategy: + matrix: + net: [ 'net6.0', 'net7.0', '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: mysql90 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-mysql91-tests.yml b/.github/workflows/auto-mysql91-tests.yml new file mode 100644 index 0000000000..3c2bc4d16f --- /dev/null +++ b/.github/workflows/auto-mysql91-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ¬ Automated MySQL 9.1 tests +run-name: Tests on MySQL 9.1 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mysql/do-mysql-9_1' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-9_1' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-9_1' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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_mysql91: + name: Tests on MySQL 9.1 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: mysql91 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-mysql92-tests.yml b/.github/workflows/auto-mysql92-tests.yml new file mode 100644 index 0000000000..4261611f83 --- /dev/null +++ b/.github/workflows/auto-mysql92-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ¬ Automated MySQL 9.2 tests +run-name: Tests on MySQL 9.2 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mysql/do-mysql-9_2' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-9_2' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-9_2' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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_mysql92: + name: Tests on MySQL 9.2 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: mysql92 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-mysql93-tests.yml b/.github/workflows/auto-mysql93-tests.yml new file mode 100644 index 0000000000..bf2532f79f --- /dev/null +++ b/.github/workflows/auto-mysql93-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ¬ Automated MySQL 9.3 tests +run-name: Tests on MySQL 9.3 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/mysql/do-mysql-9_3' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-9_3' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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/mysql/do-mysql-9_3' + - 'Containers/mysql/**.sh' + - 'Containers/mysql/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/PosgreSql/**' + - '!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_mysql93: + name: Tests on MySQL 9.3 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: mysql93 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-pgsql100-tests.yml b/.github/workflows/auto-pgsql100-tests.yml new file mode 100644 index 0000000000..4def5f5e8c --- /dev/null +++ b/.github/workflows/auto-pgsql100-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ˜ Automated PostgreSQL 10.0 tests +run-name: Tests on PostgreSQL 10.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/postgres/do-postgres-10' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-10' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-10' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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_pgsql100: + name: Tests on PostgreSQL 10.0 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: pgsql100 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-pgsql110-tests.yml b/.github/workflows/auto-pgsql110-tests.yml new file mode 100644 index 0000000000..a55775a8e7 --- /dev/null +++ b/.github/workflows/auto-pgsql110-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ˜ Automated PostgreSQL 11.0 tests +run-name: Tests on PostgreSQL 11.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/postgres/do-postgres-11' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-11' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-11' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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_pgsql110: + name: Tests on PostgreSQL 11.0 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: pgsql110 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-pgsql120-tests.yml b/.github/workflows/auto-pgsql120-tests.yml new file mode 100644 index 0000000000..3197c06c62 --- /dev/null +++ b/.github/workflows/auto-pgsql120-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ˜ Automated PostgreSQL 12.0 tests +run-name: Tests on PostgreSQL 12.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/postgres/do-postgres-12' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-12' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-12' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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_pgsql120: + name: Tests on PostgreSQL 12.0 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: pgsql120 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-pgsql130-tests.yml b/.github/workflows/auto-pgsql130-tests.yml new file mode 100644 index 0000000000..45c7d70de0 --- /dev/null +++ b/.github/workflows/auto-pgsql130-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ˜ Automated PostgreSQL 13.0 tests +run-name: Tests on PostgreSQL 13.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/postgres/do-postgres-13' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-13' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-13' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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_pgsql130: + name: Tests on PostgreSQL 13.0 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: pgsql130 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-pgsql140-tests.yml b/.github/workflows/auto-pgsql140-tests.yml new file mode 100644 index 0000000000..02c247febb --- /dev/null +++ b/.github/workflows/auto-pgsql140-tests.yml @@ -0,0 +1,173 @@ +name: βš™πŸ˜πŸ”… Automated PostgreSQL 14.0 tests +run-name: Tests on PostgreSQL 14.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/postgres/do-postgres-14' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + #main project + - 'Orm/Xtensive.Orm/**' + - '!Orm/Xtensive.Orm/**.csproj' + # provider + - 'Orm/Xtensive.Orm.PostgreSql/**' + - '!Orm/Xtensive.Orm.PostgreSql/**.csproj' + - '!Orm/Xtensive.Orm.PostgreSql/NuGetContent/**' + # tests framework + - 'Orm/Xtensive.Orm.Framework/**' + - '!Orm/Xtensive.Orm.Framework/**.csproj' + # main test project - any code change + - 'Orm/Xtensive.Orm.Tests/**' + - '!Orm/Xtensive.Orm.Tests/**.csproj' + # 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' + # weaver changes + - 'Weaver/**' + # ability to trigger on demand + - 'TestFileForBuildServerTests.txt' + + pull_request: + branches: + - 'master' + paths: + # containers + - 'Containers/postgres/do-postgres-14' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + #main project + - 'Orm/Xtensive.Orm/**' + - '!Orm/Xtensive.Orm/**.csproj' + # provider + - 'Orm/Xtensive.Orm.PostgreSql/**' + - '!Orm/Xtensive.Orm.PostgreSql/**.csproj' + - '!Orm/Xtensive.Orm.PostgreSql/NuGetContent/**' + # tests framework + - 'Orm/Xtensive.Orm.Framework/**' + - '!Orm/Xtensive.Orm.Framework/**.csproj' + # main test project - any code change + - 'Orm/Xtensive.Orm.Tests/**' + - '!Orm/Xtensive.Orm.Tests/**.csproj' + # 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' + # weaver changes + - 'Weaver/**' + # ability to trigger on demand + - 'TestFileForBuildServerTests.txt' + + pull_request_review: + branches: + - 'master' + paths: + # containers + - 'Containers/postgres/do-postgres-14' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + #main project + - 'Orm/Xtensive.Orm/**' + - '!Orm/Xtensive.Orm/**.csproj' + # provider + - 'Orm/Xtensive.Orm.PostgreSql/**' + - '!Orm/Xtensive.Orm.PostgreSql/**.csproj' + - '!Orm/Xtensive.Orm.PostgreSql/NuGetContent/**' + # tests framework + - 'Orm/Xtensive.Orm.Framework/**' + - '!Orm/Xtensive.Orm.Framework/**.csproj' + # main test project - any code change + - 'Orm/Xtensive.Orm.Tests/**' + - '!Orm/Xtensive.Orm.Tests/**.csproj' + # 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' + # weaver changes + - 'Weaver/**' + # 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_pgsql140: + name: Tests on PostgreSQL 14.0 + strategy: + matrix: + net: [ 'net6.0', 'net7.0', '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: pgsql140 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-pgsql150-tests.yml b/.github/workflows/auto-pgsql150-tests.yml new file mode 100644 index 0000000000..b90cab88c3 --- /dev/null +++ b/.github/workflows/auto-pgsql150-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ˜ Automated PostgreSQL 15.0 tests +run-name: Tests on PostgreSQL 15.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/postgres/do-postgres-15' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-15' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-15' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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_pgsql150: + name: Tests on PostgreSQL 15.0 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: pgsql150 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-pgsql160-tests.yml b/.github/workflows/auto-pgsql160-tests.yml new file mode 100644 index 0000000000..0d576a2d8b --- /dev/null +++ b/.github/workflows/auto-pgsql160-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ˜ Automated PostgreSQL 16.0 tests +run-name: Tests on PostgreSQL 16.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/postgres/do-postgres-16' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-16' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-16' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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_pgsql160: + name: Tests on PostgreSQL 16.0 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: pgsql160 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-pgsql170-tests.yml b/.github/workflows/auto-pgsql170-tests.yml new file mode 100644 index 0000000000..d2e6520bf1 --- /dev/null +++ b/.github/workflows/auto-pgsql170-tests.yml @@ -0,0 +1,182 @@ +name: βš™πŸ˜πŸ”… Automated PostgreSQL 17.0 tests +run-name: Tests on PostgreSQL 17.0 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/postgres/do-postgres-17' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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/postgres/do-postgres-17' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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/postgres/do-postgres-17' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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_pgsql170: + name: Tests on PostgreSQL 17.0 + strategy: + matrix: + net: [ 'net6.0', 'net7.0', '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: pgsql170 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-pgsql91-tests.yml b/.github/workflows/auto-pgsql91-tests.yml new file mode 100644 index 0000000000..f838d04575 --- /dev/null +++ b/.github/workflows/auto-pgsql91-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ˜ Automated PostgreSQL 9.1 tests +run-name: Tests on PostgreSQL 9.1 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/postgres/do-postgres-9_1' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-9_1' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-9_1' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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_pgsql91: + name: Tests on PostgreSQL 9.1 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: pgsql91 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-pgsql92-tests.yml b/.github/workflows/auto-pgsql92-tests.yml new file mode 100644 index 0000000000..26289aa96e --- /dev/null +++ b/.github/workflows/auto-pgsql92-tests.yml @@ -0,0 +1,149 @@ +name: βš™πŸ˜ Automated PostgreSQL 9.2 tests +run-name: Tests on PostgreSQL 9.2 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/postgres/do-postgres-9_2' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-9_2' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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/postgres/do-postgres-9_2' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.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.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/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_pgsql92: + name: Tests on PostgreSQL 9.2 + strategy: + matrix: + net: [ 'net8.0' ] # for cold runs we run for one .net + # 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: pgsql92 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-pgsql96-tests.yml b/.github/workflows/auto-pgsql96-tests.yml new file mode 100644 index 0000000000..5e8569db09 --- /dev/null +++ b/.github/workflows/auto-pgsql96-tests.yml @@ -0,0 +1,182 @@ +name: βš™πŸ˜πŸ”… Automated PostgreSQL 9.6 tests +run-name: Tests on PostgreSQL 9.6 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # containers + - 'Containers/postgres/do-postgres-9_6' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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/postgres/do-postgres-9_6' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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/postgres/do-postgres-9_6' + - 'Containers/postgres/**.sh' + - 'Containers/postgres/**.sql' + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.MySql/**' + - '!Orm/Xtensive.Orm.MySql/**.csproj' + - '!Orm/Xtensive.Orm.MySql/NuGetContent/**' + # main test project - only most significant parts + - '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_pgsql96: + name: Tests on PostgreSQL 9.6 + strategy: + matrix: + net: [ 'net6.0', 'net7.0', '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: pgsql96 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/auto-sqlite3-tests.yml b/.github/workflows/auto-sqlite3-tests.yml new file mode 100644 index 0000000000..85d53eefea --- /dev/null +++ b/.github/workflows/auto-sqlite3-tests.yml @@ -0,0 +1,172 @@ +name: βš™πŸ¦…πŸ”… Automated SQLite 3 tests +run-name: Tests on SQLite 3 tests triggered by '${{ github.event_name }}'. Run No ${{ github.run_number }}. + +on: + push: + branches: + - 'master' + - 'master-*' + paths: + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.Sqlite/**' + - '!Orm/Xtensive.Orm.Sqlite/**.csproj' + - '!Orm/Xtensive.Orm.Sqlite/NuGetContent/**' + # main test project - only most significant parts + - '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: + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.Sqlite/**' + - '!Orm/Xtensive.Orm.Sqlite/**.csproj' + - '!Orm/Xtensive.Orm.Sqlite/NuGetContent/**' + # main test project - only most significant parts + - '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: + # extensions code only + - 'Extensions/**' + - '!Extensions/**.csproj' + - '!Extensions/**.md' + - '!Extensions/**.props' + - '!Extensions/**.snk' + # main project - most common part, that may have changes that affect + - 'Orm/Xtensive.Orm/Orm/Attributes/**' + - 'Orm/Xtensive.Orm/Orm/Building/**' + - 'Orm/Xtensive.Orm/Orm/Linq/**' + - 'Orm/Xtensive.Orm/Orm/Metadata/**' + - 'Orm/Xtensive.Orm/Orm/Providers/**' + - 'Orm/Xtensive.Orm/Orm/Rse/**' + - 'Orm/Xtensive.Orm/Orm/Upgrade/**' + - 'Orm/Xtensive.Orm/Reflection/**' + - 'Orm/Xtensive.Orm/Sql/**' + # provider + - 'Orm/Xtensive.Orm.Sqlite/**' + - '!Orm/Xtensive.Orm.Sqlite/**.csproj' + - '!Orm/Xtensive.Orm.Sqlite/NuGetContent/**' + # main test project - only most significant parts + - '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_sqlite3: + name: Tests on SQLite 3 + strategy: + matrix: + net: [ 'net6.0', 'net7.0', '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: sqlite3 + build_config: Release + target_framework: ${{ matrix.net }} + test_output_verbosity: minimal + test_run_timeout: 30 + run_main: true + run_sql: true + run_extensions: true + publish_raw_results: false \ No newline at end of file diff --git a/.github/workflows/autobuild-on-push-and-pr.yml b/.github/workflows/autobuild-on-push-and-pr.yml new file mode 100644 index 0000000000..0007163c92 --- /dev/null +++ b/.github/workflows/autobuild-on-push-and-pr.yml @@ -0,0 +1,71 @@ +name: βš™πŸ— Automated build +run-name: Auto-build run on '${{ github.event_name }}'. Build ${{ github.run_number }} + +on: + push: + branches: + - 'master' + - 'master-*' + paths-ignore: + - '.github/**' + - 'ChangeLog/**' + - 'Containers/**' + - 'Documentation/**' + - '.editorconfig' + - '.gitattributes' + - '.mailmap' + - 'License.txt' + - 'ReadMe.md' + - 'User.Directory.Build.props.example' + - 'Version.props' + + pull_request: + branches: + - 'master' + paths-ignore: + - '.github/**' + - 'ChangeLog/**' + - 'Containers/**' + - 'Documentation/**' + - '.editorconfig' + - '.gitattributes' + - '.mailmap' + - 'License.txt' + - 'ReadMe.md' + - 'User.Directory.Build.props.example' + - 'Version.props' + +env: + BUILD_CONFIG: Release + TEST_VERBOSITY: minimal + +concurrency: + # Groups will not be the same for push and pull_request events! + # If not skip jobs on condition two identical runs will happen wasting compute resources + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + + +permissions: + contents: read + +jobs: + build: + name: Build + runs-on: ubuntu-latest + timeout-minutes: 10 + #We have this filter to avoid double runs on PRs and pushes when branch fits internal branching rules + if: | + github.event_name == 'push' || + (github.event_name == 'pull_request' && + (github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name || + (github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name && !startsWith(github.head_ref, 'master-')))) + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Build Orm + if: ${{ success() }} + run: dotnet build Orm.sln --configuration $BUILD_CONFIG + diff --git a/.github/workflows/delete-workflow-runs.yml b/.github/workflows/delete-workflow-runs.yml new file mode 100644 index 0000000000..9c8ef724e4 --- /dev/null +++ b/.github/workflows/delete-workflow-runs.yml @@ -0,0 +1,47 @@ +# Runs at 01:00 every tuesday and deletes workflow runs for closed pull requests, +# inactive workflows' runs or runs older than defined days. +# Can also be run manually + +name: "β€ΌDelete workflow runsβ€Ό" +run-name: Delete workflow run on ${{ github.event_name }} + +on: + schedule: + - cron: "0 1 * * 2" + workflow_dispatch: + inputs: + keepDays: + description: 'Keep history existing runs of last X days' + required: true + default: 6 + type: number + +env: + KEEP_DAYS_DEFAULT: '6' # to not let auto-cleanup delete runs during weekend + +permissions: + actions: write + contents: read + +jobs: + clear: + if: github.ref == 'refs/heads/master' + runs-on: ubuntu-22.04 + timeout-minutes: 10 + + steps: + - name: Get cleanup scripts + uses: actions/checkout@v4 + with: + sparse-checkout: | + .github/scripts + + - name: Run workflow history manual cleanup + if: ${{ github.event_name == 'workflow_dispatch' }} + run: .github/scripts/delete_workflow_runs.ps1 -repo ${{ github.repository }} -token ${{ secrets.GITHUB_TOKEN }} -keepDays ${{ inputs.keepDays }} + shell: pwsh + + - name: Run workflow history auto cleanup + if: ${{ github.event_name == 'schedule' }} + run: .github/scripts/delete_workflow_runs.ps1 -repo ${{ github.repository }} -token ${{ secrets.GITHUB_TOKEN }} -keepDays ${{ env.KEEP_DAYS_DEFAULT }} + shell: pwsh \ No newline at end of file diff --git a/.github/workflows/dispatched-build.yml b/.github/workflows/dispatched-build.yml index 434d383758..1d83e7c056 100644 --- a/.github/workflows/dispatched-build.yml +++ b/.github/workflows/dispatched-build.yml @@ -27,11 +27,6 @@ on: required: false default: '' type: string - fetch_depth: - description: 'Depth of repo fetch (change if SHA populated)' - required: false - default: 1 - type: number publish_artifacts: description: 'Publish artifacts' required: true @@ -54,15 +49,25 @@ jobs: BUILD_CONFIG: ${{ inputs.buildConfiguration }} BUILD_NUMBER: ${{ github.run_number }} steps: - - name: Checkout repo + - name: Checkout repo (last commit) + if: ${{ inputs.specific_sha == '' || github.reg_type != 'branch' }} + timeout-minutes: 1 + uses: actions/checkout@v4 + with: + ref: ${{ github.ref_name }} + + - name: Checkout repo (last 50 commit) + if: ${{ inputs.specific_sha != '' && github.reg_type == 'branch' }} timeout-minutes: 1 uses: actions/checkout@v4 with: - fetch-depth: ${{ inputs.fetch_depth }} + ref: ${{ github.ref_name }} + fetch-depth: 50 - - name: Manual checkout - if: ${{ inputs.specific_sha != '' }} - run: git checkout ${{ inputs.specific_sha }} + # it leads to detached HEAD, but we don't commit anything anyway + - name: Manual commit checkout if required + if: ${{ inputs.specific_sha != '' && github.reg_type == 'branch' }} + run: git checkout ${{ inputs.specific_sha }} - name: Build Orm if: ${{ success() }} diff --git a/.github/workflows/dispatched-firebird-tests.yml b/.github/workflows/dispatched-firebird-tests.yml index 93017a1799..78e794656c 100644 --- a/.github/workflows/dispatched-firebird-tests.yml +++ b/.github/workflows/dispatched-firebird-tests.yml @@ -3,16 +3,16 @@ run-name: Run database tests on Firebird on dispatch. Run No ${{ github.run_numb on: workflow_dispatch: inputs: - fetch_depth: - description: 'Depth of repo fetch (change if SHA populated)' - required: false - default: 1 - type: number specific_sha: description: 'Commit SHA to checkout' required: false default: '' type: string + show_all_fails: + description: 'No mute tests' + type: boolean + default: false + required: true firebird30: description: 'Firebird 3.0' type: boolean @@ -52,7 +52,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 40 run_main: true @@ -72,7 +72,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 40 run_main: true @@ -92,7 +92,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 40 run_main: true diff --git a/.github/workflows/dispatched-mssql-tests.yml b/.github/workflows/dispatched-mssql-tests.yml index 1616b4f084..f59347d1ce 100644 --- a/.github/workflows/dispatched-mssql-tests.yml +++ b/.github/workflows/dispatched-mssql-tests.yml @@ -3,16 +3,16 @@ run-name: Run database tests on MS SQL Server on dispatch. Run No ${{ github.run on: workflow_dispatch: inputs: - fetch_depth: - description: 'Depth of repo fetch (change if SHA populated)' - required: false - default: 1 - type: number specific_sha: description: 'Commit SHA to checkout' required: false default: '' type: string + show_all_fails: + description: 'No mute tests' + type: boolean + default: false + required: true mssql2017: description: 'MS SQL Server 2017' type: boolean @@ -52,7 +52,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 50 run_main: true @@ -72,7 +72,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 50 run_main: true @@ -92,7 +92,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 50 run_main: true diff --git a/.github/workflows/dispatched-mysql5-tests.yml b/.github/workflows/dispatched-mysql5-tests.yml index 310ae43127..dae1a0d57b 100644 --- a/.github/workflows/dispatched-mysql5-tests.yml +++ b/.github/workflows/dispatched-mysql5-tests.yml @@ -3,16 +3,16 @@ run-name: Run database tests on MySQL on dispatch. Run No ${{ github.run_number on: workflow_dispatch: inputs: - fetch_depth: - description: 'Depth of repo fetch (change if SHA populated)' - required: false - default: 1 - type: number specific_sha: description: 'Commit SHA to checkout' required: false default: '' type: string + show_all_fails: + description: 'No mute tests' + type: boolean + default: false + required: true mysql55: description: 'MySQL 5.5' type: boolean @@ -52,13 +52,13 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 20 run_main: true run_sql: true run_extensions: true - publish_raw_results: false + publish_raw_results: true test_on_mysql56: name: Tests on MySQL 5.6 @@ -72,7 +72,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -92,7 +92,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 35 run_main: true diff --git a/.github/workflows/dispatched-mysql8-tests.yml b/.github/workflows/dispatched-mysql8-tests.yml index 114f1666e9..ab901e2821 100644 --- a/.github/workflows/dispatched-mysql8-tests.yml +++ b/.github/workflows/dispatched-mysql8-tests.yml @@ -3,16 +3,16 @@ run-name: Run database tests on MySQL on dispatch. Run No ${{ github.run_number on: workflow_dispatch: inputs: - fetch_depth: - description: 'Depth of repo fetch (change if SHA populated)' - required: false - default: 1 - type: number specific_sha: description: 'Commit SHA to checkout' required: false default: '' type: string + show_all_fails: + description: 'No mute tests' + type: boolean + default: false + required: true mysql80: description: 'MySQL 8.0' type: boolean @@ -62,7 +62,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -82,7 +82,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -102,7 +102,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -122,7 +122,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -142,7 +142,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true diff --git a/.github/workflows/dispatched-mysql9-tests.yml b/.github/workflows/dispatched-mysql9-tests.yml index 2f4b118289..8a1f792a43 100644 --- a/.github/workflows/dispatched-mysql9-tests.yml +++ b/.github/workflows/dispatched-mysql9-tests.yml @@ -3,16 +3,16 @@ run-name: Run database tests on MySQL on dispatch. Run No ${{ github.run_number on: workflow_dispatch: inputs: - fetch_depth: - description: 'Depth of repo fetch (change if SHA populated)' - required: false - default: 1 - type: number specific_sha: description: 'Commit SHA to checkout' required: false default: '' type: string + show_all_fails: + description: 'No mute tests' + type: boolean + default: false + required: true mysql90: description: 'MySQL 9.0' type: boolean @@ -57,7 +57,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -77,7 +77,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -97,7 +97,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -117,7 +117,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true diff --git a/.github/workflows/dispatched-pgsql10-tests.yml b/.github/workflows/dispatched-pgsql10-tests.yml index 6ba801fe10..a05c4ed2ae 100644 --- a/.github/workflows/dispatched-pgsql10-tests.yml +++ b/.github/workflows/dispatched-pgsql10-tests.yml @@ -3,16 +3,16 @@ run-name: Run database tests on PostgreSQL on dispatch. Run No ${{ github.run_nu on: workflow_dispatch: inputs: - fetch_depth: - description: 'Depth of repo fetch (change if SHA populated)' - required: false - default: 1 - type: number specific_sha: description: 'Commit SHA to checkout' required: false default: '' type: string + show_all_fails: + description: 'No mute tests' + type: boolean + default: false + required: true pgsql100: description: 'PostgreSQL 10' type: boolean @@ -77,7 +77,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -97,7 +97,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -117,7 +117,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -137,7 +137,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -157,7 +157,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -177,7 +177,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -197,7 +197,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true @@ -217,7 +217,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true diff --git a/.github/workflows/dispatched-pgsql9-tests.yml b/.github/workflows/dispatched-pgsql9-tests.yml index 43961a0cee..f21c6ad6d7 100644 --- a/.github/workflows/dispatched-pgsql9-tests.yml +++ b/.github/workflows/dispatched-pgsql9-tests.yml @@ -3,16 +3,16 @@ run-name: Run database tests on PostgreSQL on dispatch. Run No ${{ github.run_nu on: workflow_dispatch: inputs: - fetch_depth: - description: 'Depth of repo fetch (change if SHA populated)' - required: false - default: 1 - type: number specific_sha: description: 'Commit SHA to checkout' required: false default: '' type: string + show_all_fails: + description: 'No mute tests' + type: boolean + default: false + required: true pgsql91: description: 'PostgreSQL 9.1' type: boolean @@ -50,7 +50,6 @@ jobs: # build_config: Release # target_frameworks: net6.0 # specific_sha: ${{ inputs.specific_sha }} - # fetch_depth: 1 # test_output_verbosity: minimal # test_run_timeout: 70 # run_main: true @@ -70,13 +69,13 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true run_sql: true run_extensions: true - publish_raw_results: false + publish_raw_results: true test_on_pgsql92: name: Tests on PostgreSQL 9.2 @@ -90,13 +89,13 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true run_sql: true run_extensions: true - publish_raw_results: false + publish_raw_results: true test_on_pgsql96: name: Tests on PostgreSQL 9.6 @@ -110,10 +109,10 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true run_sql: true run_extensions: true - publish_raw_results: false + publish_raw_results: true diff --git a/.github/workflows/dispatched-sqlite-tests.yml b/.github/workflows/dispatched-sqlite-tests.yml index a315e65913..6feeb83959 100644 --- a/.github/workflows/dispatched-sqlite-tests.yml +++ b/.github/workflows/dispatched-sqlite-tests.yml @@ -3,16 +3,16 @@ run-name: Run database tests on SQLite on dispatch. Run No ${{ github.run_number on: workflow_dispatch: inputs: - fetch_depth: - description: 'Depth of repo fetch (change if SHA populated)' - required: false - default: 1 - type: number specific_sha: description: 'Commit SHA to checkout' required: false default: '' type: string + show_all_fails: + description: 'No mute tests' + type: boolean + default: false + required: true sqlite3: description: 'SQLite 3' type: boolean @@ -42,7 +42,7 @@ jobs: build_config: Release target_framework: ${{ matrix.net }} specific_sha: ${{ inputs.specific_sha }} - fetch_depth: ${{ fromJSON(inputs.fetch_depth) }} + show_all_fails: ${{ fromJSON(inputs.show_all_fails) }} test_output_verbosity: minimal test_run_timeout: 30 run_main: true diff --git a/.github/workflows/reusable-storage-dependant-tests.yml b/.github/workflows/reusable-storage-dependant-tests.yml index 7183c19515..65faa4d546 100644 --- a/.github/workflows/reusable-storage-dependant-tests.yml +++ b/.github/workflows/reusable-storage-dependant-tests.yml @@ -23,11 +23,11 @@ on: required: false default: '' type: string - fetch_depth: - description: 'Depth of repo fetch (change if SHA populated)' + show_all_fails: + description: 'No mute tests' + type: boolean + default: false required: false - default: 1 - type: number test_output_verbosity: description: 'Verbosity for dotnet test command' required: true @@ -58,11 +58,6 @@ on: required: false default: false type: boolean - reduced_results: - description: 'Show failed only tests' - required: false - default: false - type: boolean permissions: contents: read @@ -83,12 +78,25 @@ jobs: TEST_RESULTS_FOLDER: _Build/tests/${{ inputs.build_config }}/${{ inputs.target_framework }}/${{ inputs.storage }} steps: - - name: Checkout repo + - name: downgrade OpenSSL for net5.0 + if: $${{ contains(inputs.target_framework, 'net5.0') }} + timeout-minutes: 3 + run: | + wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb + sudo dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb + + - name: Checkout repo (last commit) + if: ${{ github.event_name == 'pull_request_review' || github.event_name == 'pull_request' || inputs.specific_sha == '' || github.ref_type != 'branch' }} timeout-minutes: 1 uses: actions/checkout@v4 + + - name: Checkout repo (last 50 commit) + if: ${{ github.event_name != 'pull_request_review' && github.event_name != 'pull_request' && inputs.specific_sha != '' && github.ref_type == 'branch' }} + timeout-minutes: 5 + uses: actions/checkout@v4 with: ref: ${{ github.ref_name }} - fetch-depth: ${{ inputs.fetch_depth }} + fetch-depth: 50 # it leads to detached HEAD, but we don't commit anything anyway - name: Manual commit checkout if required @@ -123,16 +131,21 @@ jobs: # Since composite action syntax does not allow to define step timeout # we have to run Reprocessing project here, because it may stuck in forever-loop - name: Test Reprocessing extension set of tests + id: reprocessing + env: + GA_NO_IGNORE: ${{ inputs.show_all_fails }} if: ${{ success() && inputs.run_extensions }} timeout-minutes: 5 # timeout here is VERY important because reprocessing tests concurrent execution which can cause forever loop run: dotnet test Extensions/Xtensive.Orm.Reprocessing.Tests/Xtensive.Orm.Reprocessing.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Reprocessing.Tests.trx" --results-directory ${{ env.TEST_RESULTS_FOLDER }} -v ${{ inputs.test_output_verbosity }} - name: Run tests + id: complex_tests if: ${{ !cancelled()}} timeout-minutes: ${{ inputs.test_run_timeout }} uses: ./.github/actions/run-database-tests with: build_config: ${{ inputs.build_config }} + show_all_fails: ${{ inputs.show_all_fails }} test_output_verbosity: ${{ inputs.test_output_verbosity }} test_results_folder: ${{ env.TEST_RESULTS_FOLDER }} run_main: ${{ fromJSON(inputs.run_main) }} @@ -146,7 +159,8 @@ jobs: docker stop $(docker ps -a -q) - name: Publish raw test results as files - if: ${{ !cancelled() && inputs.publish_raw_results }} + if: | + (!cancelled() && inputs.publish_raw_results) || failure() timeout-minutes: 1 uses: actions/upload-artifact@v4 with: @@ -157,7 +171,9 @@ jobs: retention-days: 1 - name: Make Final Test report - if: ${{ !cancelled() }} + if: | + (github.event_name == 'workflow_dispatch' && (steps.reprocessing.outcome != 'cancelled' || steps.complex_tests.outcome != 'cancelled')) + || (github.event_name != 'workflow_dispatch' && (steps.reprocessing.outcome == 'failure' || steps.complex_tests.outcome == 'failure')) timeout-minutes: 1 uses: dorny/test-reporter@v2.1.1 with: diff --git a/.github/workflows/reusable-storage-independant-tests.yml b/.github/workflows/reusable-storage-independant-tests.yml index 14586074ec..bcf8fb9292 100644 --- a/.github/workflows/reusable-storage-independant-tests.yml +++ b/.github/workflows/reusable-storage-independant-tests.yml @@ -43,11 +43,6 @@ on: required: false default: false type: boolean - reduced_results: - description: 'Show failed only tests' - required: false - default: false - type: boolean permissions: contents: read @@ -64,13 +59,34 @@ jobs: DO_TargetFrameworks: ${{ inputs.target_framework }} TEST_RESULTS_FOLDER: _Build/tests/${{ inputs.build_config }}/${{ inputs.target_framework }}/no-database steps: - - name: Checkout repo + - name: downgrade OpenSSL for net5.0 + if: $${{ contains(inputs.target_framework, 'net5.0') }} + timeout-minutes: 3 + run: | + wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb + sudo dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb + + - name: Checkout repo (last commit) + if: ${{ github.event_name == 'pull_request_review' || github.event_name == 'pull_request' || inputs.specific_sha == '' || github.ref_type != 'branch' }} timeout-minutes: 1 uses: actions/checkout@v4 + + - name: Checkout repo (last 50 commit) + if: ${{ github.event_name != 'pull_request_review' && github.event_name != 'pull_request' && inputs.specific_sha != '' && github.ref_type == 'branch' }} + timeout-minutes: 5 + uses: actions/checkout@v4 + with: + ref: ${{ github.ref_name }} + fetch-depth: 50 + + # it leads to detached HEAD, but we don't commit anything anyway + - name: Manual commit checkout if required + if: ${{ inputs.specific_sha != '' && github.reg_type == 'branch' }} + run: git checkout ${{ inputs.specific_sha }} - name: Build Orm if: ${{ success() }} - timeout-minutes: 7 + timeout-minutes: 5 run: dotnet build Orm.sln -c ${{ inputs.build_config }} - name: Setup .NETs @@ -81,6 +97,7 @@ jobs: target_framework: ${{ env.DO_TargetFrameworks }} - name: Run tests + id: complex_tests if: ${{ success() }} timeout-minutes: ${{ inputs.test_run_timeout }} uses: ./.github/actions/run-databaseless-tests @@ -93,7 +110,8 @@ jobs: run_nlog: ${{ fromJSON(inputs.run_nlog) }} - name: Publish raw test results as files - if: ${{ !cancelled() && inputs.publish_raw_results }} + if: | + (!cancelled() && inputs.publish_raw_results) || failure() timeout-minutes: 1 uses: actions/upload-artifact@v4 with: @@ -104,7 +122,9 @@ jobs: retention-days: 1 - name: Make Final Test report - if: ${{ !cancelled() }} + if: | + (github.event_name == 'workflow_dispatch' && steps.complex_tests.outcome != 'cancelled') + || (github.event_name != 'workflow_dispatch' && steps.complex_tests.outcome == 'failure') timeout-minutes: 1 uses: dorny/test-reporter@v2.1.1 with: diff --git a/Extensions/Xtensive.Orm.Reprocessing/DomainBuilder.cs b/Extensions/Xtensive.Orm.Reprocessing/DomainBuilder.cs index db59efe07a..68023fc050 100644 --- a/Extensions/Xtensive.Orm.Reprocessing/DomainBuilder.cs +++ b/Extensions/Xtensive.Orm.Reprocessing/DomainBuilder.cs @@ -1,4 +1,4 @@ -ο»Ώusing System; +using System; using System.Linq; using System.Reflection; using Xtensive.Orm.Configuration; @@ -27,7 +27,7 @@ public virtual Domain Build(DomainConfiguration config) var ex = e.InnerException as ReflectionTypeLoadException; if (ex != null) throw new InvalidOperationException( - string.Join("\r\n", ex.LoaderExceptions.Select(a => a.Message)), ex); + string.Join(Environment.NewLine, ex.LoaderExceptions.Select(a => a.Message)), ex); throw; } } diff --git a/Orm/Xtensive.Orm.Tests.Framework/NUnitFrameworkExtensions/IgnoreIfGithubActionsAttribute.cs b/Orm/Xtensive.Orm.Tests.Framework/NUnitFrameworkExtensions/IgnoreIfGithubActionsAttribute.cs index 4facda9dc2..cbb4bd3dd0 100644 --- a/Orm/Xtensive.Orm.Tests.Framework/NUnitFrameworkExtensions/IgnoreIfGithubActionsAttribute.cs +++ b/Orm/Xtensive.Orm.Tests.Framework/NUnitFrameworkExtensions/IgnoreIfGithubActionsAttribute.cs @@ -120,10 +120,12 @@ protected override void OnAfterTestCheck(ITest test) private void Check() { + if (TestInfo.NoIgnoreOnGithubActions) { + return; + } if (Provider.HasValue && !StorageProviderInfo.Instance.CheckProviderIs(Provider.Value)) { return; } - if (TriggerEvent.HasValue && TriggerEvent != TestInfo.GithubActionTrigger) { return; } diff --git a/Orm/Xtensive.Orm.Tests.Framework/TestInfo.cs b/Orm/Xtensive.Orm.Tests.Framework/TestInfo.cs index e79b024ba2..1877b349c5 100644 --- a/Orm/Xtensive.Orm.Tests.Framework/TestInfo.cs +++ b/Orm/Xtensive.Orm.Tests.Framework/TestInfo.cs @@ -22,6 +22,7 @@ public enum GithubActionsEvents PullRequest, WorkflowDispatch, WorkflowCall, + WorkflowRun, Push, Schedule } @@ -33,6 +34,8 @@ public static class TestInfo { private static readonly bool isBuildServer; private static readonly bool isGithubActions; + private static readonly bool noIgnoreOnGithubActions; + private static readonly GithubActionsEvents? githubActionsTriggeredBy; /// @@ -63,6 +66,11 @@ public static class TestInfo /// public static bool IsGithubActions => isGithubActions; + /// + /// In case of run on GinHubActions, no test ignore happens in nor + /// + public static bool NoIgnoreOnGithubActions => noIgnoreOnGithubActions; + /// /// Gets the event that triggered test run within Github Actions environment. /// @@ -93,6 +101,7 @@ private static IEnumerable GetMethodAttributes() where T : Attribute "pull_request_target" => GithubActionsEvents.PullRequest, "workflow_dispatch" => GithubActionsEvents.WorkflowDispatch, "workflow_call" => GithubActionsEvents.WorkflowCall, + "workflow_run" => GithubActionsEvents.WorkflowRun, "schedule" => GithubActionsEvents.Schedule, _ => null }; @@ -101,7 +110,8 @@ private static IEnumerable GetMethodAttributes() where T : Attribute static TestInfo() { isBuildServer = Environment.GetEnvironmentVariable("TEAMCITY_VERSION") != null; - isGithubActions = Environment.GetEnvironmentVariable("GITHUB_WORKSPACE") != null; + isGithubActions = !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("GITHUB_WORKSPACE")); + noIgnoreOnGithubActions = isGithubActions && string.Equals(Environment.GetEnvironmentVariable("GA_NO_IGNORE"), "true", StringComparison.OrdinalIgnoreCase); githubActionsTriggeredBy = TryParseGithubEventName(Environment.GetEnvironmentVariable("GITHUB_EVENT_NAME")); } } diff --git a/Orm/Xtensive.Orm.Tests.Sql/ChinookSchemaCreator.cs b/Orm/Xtensive.Orm.Tests.Sql/ChinookSchemaCreator.cs index 0d0c3897f6..ce97aaf173 100644 --- a/Orm/Xtensive.Orm.Tests.Sql/ChinookSchemaCreator.cs +++ b/Orm/Xtensive.Orm.Tests.Sql/ChinookSchemaCreator.cs @@ -36,6 +36,7 @@ public void DropSchemaContent(Schema defaultSchema) public void DropSchemaContent(SqlConnection connection, Schema defaultSchema) { + DropViews(connection, defaultSchema); DropTables(connection, defaultSchema); DropViews(connection, defaultSchema); } diff --git a/Orm/Xtensive.Orm.Tests.Sql/MySQL/Sakila.cs b/Orm/Xtensive.Orm.Tests.Sql/MySQL/Sakila.cs index 250f675479..d3c0cccf18 100644 --- a/Orm/Xtensive.Orm.Tests.Sql/MySQL/Sakila.cs +++ b/Orm/Xtensive.Orm.Tests.Sql/MySQL/Sakila.cs @@ -22,7 +22,7 @@ namespace Xtensive.Orm.Tests.Sql.MySQL public abstract class Sakila { private readonly string sakilaDataBackupPath = Path.Combine( - Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"MySQL\SakilaDb\sakila-data.sql"); + Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"MySQL/SakilaDb/sakila-data.sql"); protected ConnectionInfo ConnectionInfo = TestConnectionInfoProvider.GetConnectionInfo(); protected SqlDriver SqlDriver; diff --git a/Orm/Xtensive.Orm.Tests/Issues/AggregatesRelatedIssues/IssueJira0786/MaxProcessingTest.cs b/Orm/Xtensive.Orm.Tests/Issues/AggregatesRelatedIssues/IssueJira0786/MaxProcessingTest.cs index 02b4461d49..11551f82f7 100644 --- a/Orm/Xtensive.Orm.Tests/Issues/AggregatesRelatedIssues/IssueJira0786/MaxProcessingTest.cs +++ b/Orm/Xtensive.Orm.Tests/Issues/AggregatesRelatedIssues/IssueJira0786/MaxProcessingTest.cs @@ -1051,12 +1051,12 @@ public void NullableFloatFieldExpressionTest06() => [Test] public void NullableDoubleFieldExpressionTest01() => - TestMax(i => i.NullableDoubleValue1 * i.NullableDoubleValue1); + TestMaxWithAccuracy(i => i.NullableDoubleValue1 * i.NullableDoubleValue1, DoubleValueAccuracy); [Mute] [Test] public void NullableDoubleFieldExpressionTest02() => - TestMax(i => (decimal?) i.NullableDoubleValue1 * i.NullableDecimalValue); + TestMaxWithAccuracy(i => (decimal?) i.NullableDoubleValue1 * i.NullableDecimalValue, DoubleValueAccuracy); [Test] public void NullableDecimalFieldExpressionTest() => diff --git a/Orm/Xtensive.Orm.Tests/Issues/MysqlStrangeDoubleSemicolumnInCommandIssue.cs b/Orm/Xtensive.Orm.Tests/Issues/MysqlStrangeDoubleSemicolumnInCommandIssue.cs new file mode 100644 index 0000000000..885fcaa82b --- /dev/null +++ b/Orm/Xtensive.Orm.Tests/Issues/MysqlStrangeDoubleSemicolumnInCommandIssue.cs @@ -0,0 +1,107 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using NUnit.Framework; +using Xtensive.Orm.Configuration; +using Xtensive.Orm.Model; +using Xtensive.Orm.Tests.Issues.MysqlStrangeDoubleSemicolumnInCommandIssueModel; + +namespace Xtensive.Orm.Tests.Issues.MysqlStrangeDoubleSemicolumnInCommandIssueModel +{ + [HierarchyRoot(InheritanceSchema.ClassTable)] + public class Product : Entity + { + [Field, Key] + public long Id { get; set; } + + [Field] + public string Name { get; set; } + + [Field] + public DateTime CreationDate { get; set; } + + [Field] + public Guid UIndentifier { get; set; } + + public Product(Session session) + : base(session) + { + } + } + + public class DerivedProduct : Product + { + [Field] + public TimeSpan TimeSpan { get; set; } + + public DerivedProduct(Session session) + : base(session) + { + } + } +} + +namespace Xtensive.Orm.Tests.Issues +{ + public sealed class MysqlStrangeDoubleSemicolumnInCommandIssue : AutoBuildTest + { + protected override void CheckRequirements() => Require.ProviderIs(StorageProvider.MySql); + + protected override DomainConfiguration BuildConfiguration() + { + var config = base.BuildConfiguration(); + config.Types.Register(typeof(Product)); + config.Types.Register(typeof(DerivedProduct)); + config.UpgradeMode = DomainUpgradeMode.Recreate; + + return config; + } + + [Test] + public void BatchingTest() + { + using (var session = Domain.OpenSession()) { + session.Events.DbCommandExecuting += BatchingHandler; + using (var transaction = session.OpenTransaction()) { + var product = new Product(session) { + Name = "BatchingTestProduct", + CreationDate = DateTime.UtcNow, + UIndentifier = Guid.NewGuid(), + }; + + var dProduct = new DerivedProduct(session) { + Name = "BatchingTestDerivedProduct", + CreationDate = DateTime.UtcNow, + UIndentifier = Guid.NewGuid(), + TimeSpan = TimeSpan.FromDays(3) + }; + session.SaveChanges(); // split persist and transaction commit + transaction.Complete(); + } + session.Events.DbCommandExecuting -= BatchingHandler; + + using (var transaction = session.OpenTransaction()) { + var allProducts = session.Query.All().ToList(); + Assert.That(allProducts.Count, Is.EqualTo(2)); + + var derivedProducts = session.Query.All().ToList(); + Assert.That(derivedProducts.Count, Is.EqualTo(1)); + } + } + } + + private void BatchingHandler(object sender, DbCommandEventArgs e) + { + var commandText = e.Command.CommandText; + if (commandText.Contains("INSERT")) { + var firstInsertIdx = commandText.IndexOf("INSERT", StringComparison.OrdinalIgnoreCase); + var lastInsertIdx = commandText.LastIndexOf("INSERT", StringComparison.OrdinalIgnoreCase); + if (firstInsertIdx == lastInsertIdx) { + throw new Exception("No batching happened"); + } + Assert.That(commandText.Contains(";;"), Is.False, $"Command = {commandText}"); + } + } + } +} diff --git a/Orm/Xtensive.Orm.Tests/Linq/MsSamples/LinqToSqlSamples.cs b/Orm/Xtensive.Orm.Tests/Linq/MsSamples/LinqToSqlSamples.cs index d29e94afcf..621396ee69 100644 --- a/Orm/Xtensive.Orm.Tests/Linq/MsSamples/LinqToSqlSamples.cs +++ b/Orm/Xtensive.Orm.Tests/Linq/MsSamples/LinqToSqlSamples.cs @@ -431,7 +431,7 @@ public void DLinqJoin2() { var q = from i in Session.Query.All() - where i.Customer.Address.Country=="USA" && i.Status==InvoiceStatus.Paid + where i.Customer.Address.Country=="United States" && i.Status==InvoiceStatus.Paid select i; QueryDumper.Dump(q); diff --git a/Orm/Xtensive.Orm.Tests/Linq/OrderByTest.cs b/Orm/Xtensive.Orm.Tests/Linq/OrderByTest.cs index 5e4655510e..fac0743add 100644 --- a/Orm/Xtensive.Orm.Tests/Linq/OrderByTest.cs +++ b/Orm/Xtensive.Orm.Tests/Linq/OrderByTest.cs @@ -99,34 +99,12 @@ public void OrderByAnonymous2Test() [Test] public void OrderByDescendingTest() { - Require.ProviderIsNot(StorageProvider.Sqlite | StorageProvider.Firebird, "Different ordering"); - - var result = Session.Query.All() - .OrderByDescending(c => c.Address.Country).ThenByDescending(c => c.CustomerId) - .Select(c => c.Address.City) - .AsEnumerable() - .Where(c => c[0] != 'S').ToList();//There are Cites which cause slight deviation in order accross RDBMSs - var expected = Customers - .OrderByDescending(c => c.Address.Country).ThenByDescending(c => c.CustomerId) - .Select(c => c.Address.City) - .Where(c => c[0] != 'S'); - Assert.That(result, Is.Not.Empty); - Assert.IsTrue(expected.SequenceEqual(result)); - } - - [Test] - public void OrderByDescendingAlternativeTest() - { - Require.ProviderIs(StorageProvider.Sqlite | StorageProvider.Firebird, "Different ordering"); - var result = Session.Query.All() - .Where(c => !c.Address.Country.StartsWith("U")) .OrderByDescending(c => c.Address.Country).ThenByDescending(c => c.CustomerId) .Select(c => c.Address.City) .AsEnumerable() .Where(c => c[0] != 'S').ToList();//There are Cites which cause slight deviation in order accross RDBMSs var expected = Customers - .Where(c => !c.Address.Country.StartsWith('U')) .OrderByDescending(c => c.Address.Country).ThenByDescending(c => c.CustomerId) .Select(c => c.Address.City) .Where(c => c[0] != 'S'); @@ -166,12 +144,12 @@ public void OrderByExpressionReducedDataTest() // to avoid non-english characters, which cause different order // we filter out everything that may have them var serverSide = Session.Query.All() - .Where(c => c.Address.Country.In("USA", "Canda", "France", "United Kingdom")) + .Where(c => c.Address.Country.In("United States", "Canda", "France", "United Kingdom")) .OrderBy(c => c.LastName.ToUpper()) .Select(c => new { c.LastName, c.Address.Country }) .ToList(); var local = Customers - .Where(c => c.Address.Country.In("USA", "Canda", "France", "United Kingdom")) + .Where(c => c.Address.Country.In("United States", "Canda", "France", "United Kingdom")) .OrderBy(c => c.LastName.ToUpper()).Select(c => new { c.LastName, c.Address.Country }).ToList(); Assert.That(serverSide, Is.Not.Empty); Assert.IsTrue(local.SequenceEqual(serverSide)); diff --git a/Orm/Xtensive.Orm.Tests/Linq/SkipTakeElementAtTest.cs b/Orm/Xtensive.Orm.Tests/Linq/SkipTakeElementAtTest.cs index 9244a10511..67d74b8d4b 100644 --- a/Orm/Xtensive.Orm.Tests/Linq/SkipTakeElementAtTest.cs +++ b/Orm/Xtensive.Orm.Tests/Linq/SkipTakeElementAtTest.cs @@ -41,7 +41,7 @@ public void ReuseTake1Test() public void TakeTest(int takeValue) { var query = Session.Query.All() - .Where(c => c.Address.Country == "USA") + .Where(c => c.Address.Country == "United States") .Select(c => c.Key) .Take(takeValue); if (takeValue <= 0) { @@ -64,9 +64,9 @@ public void TakeTest(int takeValue) public void SkipTest(int skipValue) { var customersFromGermanyOverallCount = Session.Query.All() - .Where(c => c.Address.Country == "USA").Count(); + .Where(c => c.Address.Country == "United States").Count(); var query = Session.Query.All() - .Where(c => c.Address.Country == "USA") + .Where(c => c.Address.Country == "United States") .Select(c => c.Key) .Skip(skipValue); diff --git a/Orm/Xtensive.Orm.Tests/ObjectModel/ChinookDO.cs b/Orm/Xtensive.Orm.Tests/ObjectModel/ChinookDO.cs index 08d414c179..62e2a379cc 100644 --- a/Orm/Xtensive.Orm.Tests/ObjectModel/ChinookDO.cs +++ b/Orm/Xtensive.Orm.Tests/ObjectModel/ChinookDO.cs @@ -1,4 +1,4 @@ -ο»Ώ// Copyright (C) 2010 Xtensive LLC. +// Copyright (C) 2010 Xtensive LLC. // All rights reserved. // For conditions of distribution and use, see license. // Created by: Denis Kudelin @@ -153,7 +153,9 @@ public override void Import(Dictionary fields, ImportContext con StreetAddress = (string) fields["StreetAddress"], City = (string) fields["City"], State = (string) fields["State"], - Country = (string) fields["Country"], + // USA and United Kingdom, depending on runtime and/or RDBMS, can be differently ordered + // so not having abbreviation should resolve this issue. + Country = ((string) fields["Country"]).Replace("USA", "United States", StringComparison.Ordinal), PostalCode = (string) fields["PostalCode"], }, Phone = (string) fields["Phone"], @@ -179,7 +181,9 @@ public override void Import(Dictionary fields, ImportContext con StreetAddress = (string) fields["BillingStreetAddress"], City = (string) fields["BillingCity"], State = (string) fields["BillingState"], - Country = (string) fields["BillingCountry"], + // USA and United Kingdom, depending on runtime and/or RDBMS, can be differently ordered + // so not having abbreviation should resolve this issue. + Country = ((string) fields["BillingCountry"]).Replace("USA", "United States", StringComparison.Ordinal), PostalCode = (string) fields["BillingPostalCode"], }, Total = (decimal) fields["Total"], diff --git a/Orm/Xtensive.Orm.Tests/TestInfoTest.cs b/Orm/Xtensive.Orm.Tests/TestInfoTest.cs new file mode 100644 index 0000000000..dfaa4a126c --- /dev/null +++ b/Orm/Xtensive.Orm.Tests/TestInfoTest.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Text; +using NUnit.Framework; + +namespace Xtensive.Orm.Tests +{ + + [TestFixture] + public sealed class TestInfoTest + { + [Test] + public void IsBuildServerTest() + { + var teamCityVersion = Environment.GetEnvironmentVariable("TEAMCITY_VERSION"); + Console.WriteLine($"TEAMCITY_VERSION : {teamCityVersion}; IsBuildServer : {TestInfo.IsBuildServer}"); + Assert.That(TestInfo.IsBuildServer, Is.EqualTo(teamCityVersion != null)); + } + + [Test] + public void IsGithubActionsTest() + { + var githubActions = Environment.GetEnvironmentVariable("GITHUB_WORKSPACE"); + Console.WriteLine($"GITHUB_WORKSPACE : {githubActions}; IsGithubActions : {TestInfo.IsGithubActions}"); + + if (githubActions is null) { + Assert.That(TestInfo.IsGithubActions, Is.False); + + var githbuActionsNoIgnore = Environment.GetEnvironmentVariable("GA_NO_IGNORE"); + Console.WriteLine($"GA_NO_IGNORE : {githbuActionsNoIgnore} ; NoIgnoreOnGithubActions : {TestInfo.NoIgnoreOnGithubActions}"); + if (githbuActionsNoIgnore is null) + Assert.That(TestInfo.NoIgnoreOnGithubActions); + else + Assert.That(TestInfo.NoIgnoreOnGithubActions); + } + else { + Assert.That(TestInfo.IsGithubActions, Is.True); + + var githubActionsTrigger = Environment.GetEnvironmentVariable("GITHUB_EVENT_NAME"); + Console.WriteLine($"GITHUB_EVENT_NAME : {githubActionsTrigger} ; GithubActionTrigger : {TestInfo.GithubActionTrigger}"); + if (githubActionsTrigger is null) { + Assert.That(TestInfo.GithubActionTrigger.HasValue, Is.False); + } + else { + Assert.That(TestInfo.GithubActionTrigger.HasValue, Is.True); + } + + var githbuActionsNoIgnore = Environment.GetEnvironmentVariable("GA_NO_IGNORE"); + Console.WriteLine($"GA_NO_IGNORE : {githbuActionsNoIgnore} ; NoIgnoreOnGithubActions : {TestInfo.NoIgnoreOnGithubActions}"); + if (githbuActionsNoIgnore is null) { + Assert.That(TestInfo.NoIgnoreOnGithubActions, Is.False); + } + else { + Assert.That(TestInfo.NoIgnoreOnGithubActions, Is.EqualTo(githbuActionsNoIgnore.Equals("true", StringComparison.OrdinalIgnoreCase))); + } + } + } + } +} diff --git a/Orm/Xtensive.Orm/Orm/KeyMapping.cs b/Orm/Xtensive.Orm/Orm/KeyMapping.cs index b4a6d625f5..13aa3aa50f 100644 --- a/Orm/Xtensive.Orm/Orm/KeyMapping.cs +++ b/Orm/Xtensive.Orm/Orm/KeyMapping.cs @@ -49,7 +49,7 @@ public void RemapEntityKeys(Session session) /// public override string ToString() { - return $"{Strings.KeyMapping}:\r\n" + ( + return $"{Strings.KeyMapping}:{Environment.NewLine}" + ( from pair in Map let pairKeyString = pair.Key.ToString() orderby pairKeyString diff --git a/Orm/Xtensive.Orm/Orm/Operation.cs b/Orm/Xtensive.Orm/Orm/Operation.cs index aeaaaa2031..d8983d81ee 100644 --- a/Orm/Xtensive.Orm/Orm/Operation.cs +++ b/Orm/Xtensive.Orm/Orm/Operation.cs @@ -118,7 +118,7 @@ public override string ToString() private string FormatIdentifiedEntities() { // Shouldn't be moved to resources - return " Identified entities:\r\n" + ( + return " Identified entities:" + Environment.NewLine + ( from pair in IdentifiedEntities orderby pair.Key select $" {pair.Key}: {pair.Value}" @@ -129,7 +129,7 @@ orderby pair.Key private string FormatOperations(string title, IEnumerable operations) { // Shouldn't be moved to resources - return $" {title}:\r\n" + + return string.Format(" {0}:", title) + Environment.NewLine + operations.ToDelimitedString(Environment.NewLine).ToString().Indent(4); } diff --git a/Orm/Xtensive.Orm/Orm/OperationLog.cs b/Orm/Xtensive.Orm/Orm/OperationLog.cs index 748daa89f8..fed7eeb901 100644 --- a/Orm/Xtensive.Orm/Orm/OperationLog.cs +++ b/Orm/Xtensive.Orm/Orm/OperationLog.cs @@ -110,7 +110,8 @@ public object Replay(object target) /// public override string ToString() { - var sb = new StringBuilder($"{Strings.Operations}:\r\n"); + var sb = new StringBuilder(string.Format("{0}:", Strings.Operations)); + _ = sb.AppendLine(); foreach (var o in operations) sb.AppendLine(o.ToString().Indent(2)); return sb.ToString().Trim(); diff --git a/Orm/Xtensive.Orm/Orm/Operations/KeySetOperation.cs b/Orm/Xtensive.Orm/Orm/Operations/KeySetOperation.cs index 532522c8ab..1ed5a7da6f 100644 --- a/Orm/Xtensive.Orm/Orm/Operations/KeySetOperation.cs +++ b/Orm/Xtensive.Orm/Orm/Operations/KeySetOperation.cs @@ -28,7 +28,7 @@ public abstract class KeySetOperation : Operation, public override string Description { get { - return $"{Title}:\r\n{Keys.ToDelimitedString("\r\n").Indent(2)}"; + return $"{Title}:{Environment.NewLine}{Keys.ToDelimitedString(Environment.NewLine).Indent(2)}"; } } diff --git a/Orm/Xtensive.Orm/Orm/Upgrade/SchemaComparisonResult.cs b/Orm/Xtensive.Orm/Orm/Upgrade/SchemaComparisonResult.cs index 819e94ea0f..c23864dd8a 100644 --- a/Orm/Xtensive.Orm/Orm/Upgrade/SchemaComparisonResult.cs +++ b/Orm/Xtensive.Orm/Orm/Upgrade/SchemaComparisonResult.cs @@ -72,7 +72,7 @@ public override string ToString() HasUnsafeActions.ToString().ToLower(), HasColumnTypeChanges.ToString().ToLower(), IsCompatibleInLegacyMode.HasValue ? IsCompatibleInLegacyMode.Value.ToString() : Strings.Unknown, - UnsafeActions.Any() ? UnsafeActions.ToDelimitedString("\r\n").Indent(2) : string.Empty, + UnsafeActions.Any() ? UnsafeActions.ToDelimitedString(Environment.NewLine).Indent(2) : string.Empty, Hints!=null ? Hints.ToString().Indent(2) : string.Empty, Difference!=null ? Difference.ToString().Indent(2) : string.Empty); } diff --git a/Orm/Xtensive.Orm/Sql/Compiler/SqlTranslator.cs b/Orm/Xtensive.Orm/Sql/Compiler/SqlTranslator.cs index b9ced3035f..4f74980e27 100644 --- a/Orm/Xtensive.Orm/Sql/Compiler/SqlTranslator.cs +++ b/Orm/Xtensive.Orm/Sql/Compiler/SqlTranslator.cs @@ -34,7 +34,7 @@ public abstract class SqlTranslator : SqlDriverBound public NumberFormatInfo FloatNumberFormat { get; private set; } public NumberFormatInfo DoubleNumberFormat { get; private set; } - public virtual string NewLine => "\r\n"; + public virtual string NewLine { get { return Environment.NewLine; } } public virtual string OpeningParenthesis => "("; public virtual string ClosingParenthesis => ")"; diff --git a/ReadMe.md b/ReadMe.md index 88616b9ad9..2edf4fa093 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,5 +1,5 @@ ## :exclamation: Important :exclamation: -We discovered a serious issue connected to entity saving to storage for provider that use batching. Though its appearance is rare, version update is **strongly recommended**. +We discovered a serious issue connected to entity saving to storage for providers that use batching. Though its appearance is rare, version update is **strongly recommended**. Minimal versions in which the issue is addressed: [6.0.12](https://github.com/DataObjects-NET/dataobjects-net/releases/tag/6.0.12), [7.0.4](https://github.com/DataObjects-NET/dataobjects-net/releases/tag/7.0.4), diff --git a/Version.props b/Version.props index ddbcf1662f..d989becc36 100644 --- a/Version.props +++ b/Version.props @@ -2,8 +2,8 @@ - 7.2.191 - servicetitan-test + 7.2.192 + servicetitan