Skip to content

Commit c17c922

Browse files
authored
Merge pull request #406 from servicetitan/mergeUpstream
Merge upstream
2 parents 1cba370 + 719cb79 commit c17c922

File tree

622 files changed

+9450
-1975
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

622 files changed

+9450
-1975
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: Run set of storage-dependant tests
2+
description: Groups runs of several test projects that require a database
3+
4+
inputs:
5+
build_config:
6+
description: 'Build configuration'
7+
required: true
8+
default: 'Release'
9+
type: string
10+
test_output_verbosity:
11+
description: 'Verbosity for dotnet test command'
12+
required: true
13+
default: 'minimal'
14+
type: string
15+
test_results_folder:
16+
description: 'Folder where trx-files will be located for later parsing'
17+
required: true
18+
type: string
19+
run_main:
20+
description: 'Run Xtensive.Orm.Tests tests'
21+
required: true
22+
default: true
23+
type: boolean
24+
run_sql:
25+
description: 'Run Xtensive.Orm.Tests.Sql tests'
26+
required: true
27+
default: true
28+
type: boolean
29+
run_extensions:
30+
description: 'Run extension projects tests'
31+
required: true
32+
default: true
33+
type: boolean
34+
35+
runs:
36+
using: "composite"
37+
steps:
38+
- name: Test Orm.Tests set of tests
39+
if: ${{ !cancelled() && fromJSON(inputs.run_main) }}
40+
shell: bash
41+
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 }}
42+
43+
- name: Test Orm.Tests.Sql set of tests
44+
if: ${{ !cancelled() && fromJSON(inputs.run_sql) }}
45+
shell: bash
46+
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 }}
47+
48+
- name: Test BulkOperations extension set of tests
49+
if: ${{ !cancelled() && fromJSON(inputs.run_extensions) }}
50+
shell: bash
51+
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 }}
52+
53+
- name: Test Localization extension set of tests
54+
if: ${{ !cancelled() && fromJSON(inputs.run_extensions) }}
55+
shell: bash
56+
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 }}
57+
58+
# NOTE! NO REPROCESSING TESTS. Reprocessing tests use multi-thread processing which may cause infinite execution.
59+
# Steps in composite action are not allowed to set timeout, it can be set only in calling job for entire composite
60+
# step. To not disturb normal tests execution Reprocessing tests moved outside the action.
61+
62+
- name: Test Security extension set of tests
63+
if: ${{ !cancelled() && fromJSON(inputs.run_extensions) }}
64+
shell: bash
65+
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 }}
66+
67+
- name: Test Tracking extension set of tests
68+
if: ${{ !cancelled() && fromJSON(inputs.run_extensions) }}
69+
shell: bash
70+
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 }}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Run set of storage-independant tests
2+
description: Groups runs of several test projects that don't require a database
3+
4+
inputs:
5+
build_config:
6+
description: 'Build configuration'
7+
required: true
8+
default: 'Release'
9+
type: string
10+
test_output_verbosity:
11+
description: 'Verbosity for dotnet test command'
12+
required: true
13+
default: 'minimal'
14+
type: string
15+
test_results_folder:
16+
description: 'Folder where trx-files will be located for later parsing'
17+
required: true
18+
type: string
19+
run_core:
20+
description: 'Run Xtensive.Orm.Tests.Core tests'
21+
required: true
22+
default: true
23+
type: boolean
24+
run_log4net:
25+
description: 'Run Xtensive.Orm.Logging.log4net tests'
26+
required: true
27+
default: true
28+
type: boolean
29+
run_nlog:
30+
description: 'Run Xtensive.Orm.Logging.NLog tests'
31+
required: true
32+
default: true
33+
type: boolean
34+
35+
runs:
36+
using: "composite"
37+
steps:
38+
# core tests does not require any storage and take not so much time
39+
- name: Run Core tests
40+
if: ${{ !cancelled() && fromJSON(inputs.run_core) }}
41+
shell: bash
42+
run: dotnet test Orm/Xtensive.Orm.Tests.Core/Xtensive.Orm.Tests.Core.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Tests.Core.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }}
43+
44+
- name: Run log4net tests
45+
if: ${{ !cancelled() && fromJSON(inputs.run_log4net) }}
46+
shell: bash
47+
run: dotnet test Extensions/Xtensive.Orm.Logging.log4net.Tests/Xtensive.Orm.Logging.log4net.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Logging.log4net.Tests.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }}
48+
49+
- name: Run NLog tests
50+
if: ${{ !cancelled() && fromJSON(inputs.run_nlog) }}
51+
shell: bash
52+
run: dotnet test Extensions/Xtensive.Orm.Logging.NLog.Tests/Xtensive.Orm.Logging.NLog.Tests.csproj -c ${{ inputs.build_config }} --no-build --logger "trx;LogFileName=Xtensive.Orm.Logging.NLog.Tests.trx" --results-directory ${{ inputs.test_results_folder }} -v ${{ inputs.test_output_verbosity }}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Setup .NET versions
2+
description: Sets up one or multiple .NET versions according to target frameworks
3+
4+
inputs:
5+
target_framework:
6+
description: "Target frameworks which are used in projects (net6.0, netcoreapp2.2, netcoreapp3.1, etc.)"
7+
required: true
8+
type: string
9+
10+
runs:
11+
using: "composite"
12+
13+
steps:
14+
- name: Setup .NET 9 (if needed)
15+
if: ${{ contains(inputs.target_framework, '9.0') }}
16+
uses: actions/setup-dotnet@v4
17+
with:
18+
dotnet-version: '9.0.x'
19+
20+
- name: Setup .NET 8 (if needed)
21+
if: ${{ contains(inputs.target_framework, '8.0') }}
22+
uses: actions/setup-dotnet@v4
23+
with:
24+
dotnet-version: '8.0.x'
25+
26+
- name: Setup .NET 7 (if needed)
27+
if: ${{ contains(inputs.target_framework, '7.0') }}
28+
uses: actions/setup-dotnet@v4
29+
with:
30+
dotnet-version: '7.0.x'
31+
32+
- name: Setup .NET 6 (if needed)
33+
if: ${{ contains(inputs.target_framework, '6.0') }}
34+
uses: actions/setup-dotnet@v4
35+
with:
36+
dotnet-version: '6.0.x'
37+
38+
- name: Setup .NET 5 (if needed)
39+
if: ${{ contains(inputs.target_framework, '5.0') }}
40+
uses: actions/setup-dotnet@v4
41+
with:
42+
dotnet-version: '5.0.x'
43+
44+
- name: Setup .NET Core 3.1 (if needed)
45+
if: ${{ contains(inputs.target_framework, '3.1') }}
46+
uses: actions/setup-dotnet@v4
47+
with:
48+
dotnet-version: '3.1.x'
49+
50+
- name: Setup .NET Core 2.0 (if needed)
51+
if: ${{ contains(inputs.target_framework, '2.0') }}
52+
uses: actions/setup-dotnet@v4
53+
with:
54+
dotnet-version: '2.0.x'
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
name: 📦🏷 Build on tag push
2+
run-name: Build DO on tag '${{ github.ref_name }}'
3+
on:
4+
push:
5+
tags:
6+
- '7.2.*'
7+
8+
# new commits with the same key will cancel previously run workflows
9+
#concurrency:
10+
# group: ${{ github.workflow }}-${{ github.ref }}
11+
# cancel-in-progress: true
12+
13+
permissions:
14+
contents: write
15+
16+
jobs:
17+
build:
18+
name: Build
19+
runs-on: ubuntu-latest
20+
env:
21+
IS_PRERELEASE: ${{ contains(github.ref_name, '-') || contains(github.ref_name, '_') }}
22+
TAG_PATTERN: ''
23+
FILE_SEARCH_PATTERN: ''
24+
CHANGELOG_PATH: ''
25+
steps:
26+
# Examples of how it should work
27+
# 6.0.10 -> 6.0.10*Final.txt
28+
# 6.0.0-Beta-1 -> 6.0.0*Beta*1.txt
29+
# 6.0.0_Beta_1 -> 6.0.0*Beta*1.txt
30+
# 6.0.0_Beta-1 -> 6.0.0*Beta*1.txt
31+
- name: Prepare tag pattern
32+
run: |
33+
ORIG="${{ github.ref_name }}"
34+
REP1="${ORIG//-/*}"
35+
REP2="${REP1//_/*}"
36+
echo "TAG_PATTERN=$REP2" >> ${GITHUB_ENV}
37+
38+
- name: Prepare file search pattern (if pre-release)
39+
if: ${{ env.IS_PRERELEASE == 'true' }}
40+
run: |
41+
echo 'FILE_SEARCH_PATTERN="$TAG_PATTERN.txt"' >> ${GITHUB_ENV}
42+
43+
- name: Prepare file search pattern (if final)
44+
if: ${{ env.IS_PRERELEASE == 'false' }}
45+
run: |
46+
echo 'FILE_SEARCH_PATTERN="${{ github.ref_name }}*Final.txt"' >> ${GITHUB_ENV}
47+
48+
- name: Checkout repo
49+
if: ${{ success() }}
50+
timeout-minutes: 1
51+
uses: actions/checkout@v4
52+
53+
# ensure release file exists, if not then something went wrong and it sources are not release ready and we abort
54+
- name: Prepare changelog path
55+
if: ${{ success() }}
56+
run: |
57+
echo 'CHANGELOG_PATH=$(find ChangeLog/ -name "${{ env.FILE_SEARCH_PATTERN }}")' >> ${GITHUB_ENV}
58+
59+
- name: Ensure changelog exists
60+
if: ${{ success() }}
61+
run: |
62+
if [ -z "$CHANGELOG_PATH" ]; then
63+
exit 1
64+
fi
65+
66+
- name: Build Orm
67+
if: ${{ success() }}
68+
run: dotnet build Orm.sln --configuration Release
69+
70+
#check that nuget packages are built, last chance to abort
71+
- name: Check package exist
72+
if: ${{ success() }}
73+
run: |
74+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
75+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.Firebird.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
76+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.MySql.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
77+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.Oracle.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
78+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.PostgreSql.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
79+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.Sqlite.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
80+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.SqlServer.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
81+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.BulkOperations.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
82+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.Localization.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
83+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.Logging.log4net.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
84+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.Logging.NLog.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
85+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.Reprocessing.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
86+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.Security.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
87+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.Tracking.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
88+
if [ -z $(find _Build/bin/Release/packages -name "Xtensive.Orm.Web.${{ env.TAG_PATTERN }}.nupkg") ]; then exit 1; fi
89+
90+
- name: Install dotnet-validate
91+
if: ${{ success() }}
92+
timeout-minutes: 2
93+
run: dotnet tool install --global dotnet-validate --version 0.0.1-preview.537
94+
95+
- name: Validate NuGet packages
96+
if: ${{ success() }}
97+
timeout-minutes: 1
98+
run: |
99+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.${{ env.TAG_PATTERN }}.nupkg
100+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.Firebird.${{ env.TAG_PATTERN }}.nupkg
101+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.MySql.${{ env.TAG_PATTERN }}.nupkg
102+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.Oracle.${{ env.TAG_PATTERN }}.nupkg
103+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.PostgreSql.${{ env.TAG_PATTERN }}.nupkg
104+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.Sqlite.${{ env.TAG_PATTERN }}.nupkg
105+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.SqlServer.${{ env.TAG_PATTERN }}.nupkg
106+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.BulkOperations.${{ env.TAG_PATTERN }}.nupkg
107+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.Localization.${{ env.TAG_PATTERN }}.nupkg
108+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.Logging.log4net.${{ env.TAG_PATTERN }}.nupkg
109+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.Logging.NLog.${{ env.TAG_PATTERN }}.nupkg
110+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.Reprocessing.${{ env.TAG_PATTERN }}.nupkg
111+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.Security.${{ env.TAG_PATTERN }}.nupkg
112+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.Tracking.${{ env.TAG_PATTERN }}.nupkg
113+
dotnet-validate package local _Build/bin/Release/packages/Xtensive.Orm.Web.${{ env.TAG_PATTERN }}.nupkg
114+
115+
- name: Organize files
116+
if: ${{ success() }}
117+
run: |
118+
mkdir -p _Build/bin/Release/Binaries
119+
mkdir -p _Build/bin/Release/Dist
120+
cp -r _Build/bin/Release/lib _Build/bin/Release/Binaries/
121+
cp -r _Build/bin/Release/tools _Build/bin/Release/Binaries/
122+
cp -r _Build/bin/Release/packages _Build/bin/Release/Dist/
123+
124+
- name: Publish artifacts
125+
if: ${{ success() }}
126+
uses: actions/upload-artifact@v4
127+
with:
128+
name: DO_${{ github.ref_name}}
129+
path: |
130+
_Build/bin/Release/Binaries/**
131+
_Build/bin/Release/Dist/**
132+
if-no-files-found: error
133+
retention-days: 1
134+
135+
- name: Create release notes
136+
if: ${{ success() }}
137+
run: |
138+
mkdir -p _Build/tmp
139+
sed 's/^/- /' ${{ env.CHANGELOG_PATH }} > _Build/tmp/releasenotes.txt
140+
141+
- name: Create release draft
142+
uses: actions/[email protected]
143+
env:
144+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
145+
with:
146+
tag_name: ${{ github.ref_name }}
147+
release_name: v${{ github.ref_name }}
148+
body_path: _Build/tmp/releasenotes.txt
149+
draft: true
150+
prerelease: ${{ env.IS_PRERELEASE == 'true' }}

0 commit comments

Comments
 (0)