diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml
new file mode 100644
index 0000000..60126bd
--- /dev/null
+++ b/.github/workflows/build-and-deploy.yml
@@ -0,0 +1,70 @@
+name: Build and Deploy
+on:
+ pull_request:
+ branches:
+ - master
+ push:
+ branches:
+ - master
+env:
+ APP_NAME: DynamicExpression
+ VERSION: 9.0.2
+ NUGET_HOST: https://www.nuget.org
+ NUGET_APIKEY: ${{ secrets.NUGET_APIKEY }}
+jobs:
+ build-and-deploy:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ packages: write
+ id-token: write
+ concurrency:
+ group: ${{ github.repository }}
+ cancel-in-progress: false
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-dotnet@v3
+ with:
+ dotnet-version: 9.0.x
+
+ - name: Build and Test
+ shell: pwsh
+ run: |
+ dotnet build -c Release .\$env:APP_NAME.sln;
+ if ($LastExitCode -ne 0)
+ {
+ throw "Build failed";
+ };
+
+ dotnet test .\.tests\Tests.$env:APP_NAME\Tests.$env:APP_NAME.csproj
+ if ($LastExitCode -ne 0)
+ {
+ throw "Tests failed";
+ };
+
+ dotnet pack --output nupkgs /p:PackageVersion=$env:VERSION;
+ if ($LastExitCode -ne 0)
+ {
+ throw "Pack failed";
+ };
+
+ - name: Push NuGet
+ if: github.ref == 'refs/heads/master'
+ shell: pwsh
+ run: |
+ dotnet nuget push nupkgs/$env:APP_NAME"."$env:VERSION.nupkg -s $env:NUGET_HOST -k $env:NUGET_APIKEY
+ dotnet nuget push nupkgs/$env:APP_NAME"."$env:VERSION.snupkg -s $env:NUGET_HOST -k $env:NUGET_APIKEY
+
+ - name: GitHub Release
+ if: github.ref == 'refs/heads/master'
+ uses: ncipollo/release-action@v1
+ with:
+ tag: v${{ env.VERSION }}
+ name: "Release ${{ env.VERSION }}"
+ body: |
+ Version: ${{ env.VERSION }}
+ Commit: ${{ github.sha }}
+ artifacts: "nupkgs/*"
+ token: ${{ secrets.GITHUB_TOKEN }}
+ draft: false
+ prerelease: false
\ No newline at end of file
diff --git a/.tests/DynamicExpression.Test/CriteriaBuilderTest.cs b/.tests/Tests.DynamicExpression/CriteriaBuilderTest.cs
similarity index 100%
rename from .tests/DynamicExpression.Test/CriteriaBuilderTest.cs
rename to .tests/Tests.DynamicExpression/CriteriaBuilderTest.cs
diff --git a/.tests/DynamicExpression.Test/CriteriaExpressionTest.cs b/.tests/Tests.DynamicExpression/CriteriaExpressionTest.cs
similarity index 100%
rename from .tests/DynamicExpression.Test/CriteriaExpressionTest.cs
rename to .tests/Tests.DynamicExpression/CriteriaExpressionTest.cs
diff --git a/.tests/DynamicExpression.Test/Extensions/QueryableExtensionsTest.cs b/.tests/Tests.DynamicExpression/Extensions/QueryableExtensionsTest.cs
similarity index 100%
rename from .tests/DynamicExpression.Test/Extensions/QueryableExtensionsTest.cs
rename to .tests/Tests.DynamicExpression/Extensions/QueryableExtensionsTest.cs
diff --git a/.tests/DynamicExpression.Test/DynamicExpression.Test.csproj b/.tests/Tests.DynamicExpression/Tests.DynamicExpression.csproj
similarity index 100%
rename from .tests/DynamicExpression.Test/DynamicExpression.Test.csproj
rename to .tests/Tests.DynamicExpression/Tests.DynamicExpression.csproj
diff --git a/DynamicExpression.sln b/DynamicExpression.sln
index 24a2055..109808c 100644
--- a/DynamicExpression.sln
+++ b/DynamicExpression.sln
@@ -6,7 +6,6 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".solution", ".solution", "{EA0E8885-9387-4A54-8DE6-65EB2431C1B9}"
ProjectSection(SolutionItems) = preProject
.gitignore = .gitignore
- appveyor.yml = appveyor.yml
icon.jpg = icon.jpg
LICENSE = LICENSE
README.md = README.md
@@ -16,7 +15,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DynamicExpression", "Dynami
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".tests", ".tests", "{8BD321DD-4802-4A62-BA89-615F8565298F}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DynamicExpression.Test", ".tests\DynamicExpression.Test\DynamicExpression.Test.csproj", "{E13EA595-4752-4DD2-9AEE-EAEFDEBD86BF}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{F1E6FE2B-1C26-464C-BCAA-2F22531084D3}"
+ ProjectSection(SolutionItems) = preProject
+ .github\workflows\build-and-deploy.yml = .github\workflows\build-and-deploy.yml
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.DynamicExpression", ".tests\Tests.DynamicExpression\Tests.DynamicExpression.csproj", "{25B6B71F-1096-6FB0-3131-FFEE12EB9024}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -28,15 +34,17 @@ Global
{B283F4A4-1E7B-4D9A-A767-002C11B2C881}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B283F4A4-1E7B-4D9A-A767-002C11B2C881}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B283F4A4-1E7B-4D9A-A767-002C11B2C881}.Release|Any CPU.Build.0 = Release|Any CPU
- {E13EA595-4752-4DD2-9AEE-EAEFDEBD86BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E13EA595-4752-4DD2-9AEE-EAEFDEBD86BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E13EA595-4752-4DD2-9AEE-EAEFDEBD86BF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {25B6B71F-1096-6FB0-3131-FFEE12EB9024}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {25B6B71F-1096-6FB0-3131-FFEE12EB9024}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {25B6B71F-1096-6FB0-3131-FFEE12EB9024}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {25B6B71F-1096-6FB0-3131-FFEE12EB9024}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {E13EA595-4752-4DD2-9AEE-EAEFDEBD86BF} = {8BD321DD-4802-4A62-BA89-615F8565298F}
+ {F1E6FE2B-1C26-464C-BCAA-2F22531084D3} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {25B6B71F-1096-6FB0-3131-FFEE12EB9024} = {8BD321DD-4802-4A62-BA89-615F8565298F}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {88C60CFA-317B-4439-ACA0-4CBE16274F92}
diff --git a/DynamicExpression/DynamicExpression.csproj b/DynamicExpression/DynamicExpression.csproj
index 62c712a..9708f32 100644
--- a/DynamicExpression/DynamicExpression.csproj
+++ b/DynamicExpression/DynamicExpression.csproj
@@ -3,9 +3,9 @@
net9.0
true
AnyCPU
- 9.0.1.0
- 9.0.1.0
- 9.0.1.0
+ 9.0.2.0
+ 9.0.2.0
+ 9.0.2.0
latest
Michael Vivet
Dynamic Expression
@@ -15,7 +15,7 @@
Lampda, Expression, Linq, Dynamic, Criteria, Query, Paging, Pagination, Sort, Sorting
README.md
- - Added Geometry types from nettopologysuite for geo-spatial criteria.
+ - Moved CI/CD to GitHub Actions.
https://raw.githubusercontent.com/vivet/DynamicExpression/master/LICENSE
LICENSE
diff --git a/README.md b/README.md
index 3d0aa1b..7e29f99 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# Dynamic Expression
-[](https://ci.appveyor.com/project/vivet/dynamicexpression/branch/master)
+[](https://github.com/Vivet/DynamicExpression/actions/workflows/build-and-deploy.yml)
[](https://www.nuget.org/packages/DynamicExpression/)
[](https://www.nuget.org/packages/DynamicExpression/)
@@ -121,4 +121,4 @@ Add Query and Query Criteria to MVC.
```csharp
services
.AddQueryModelBinders();
-```
+```
\ No newline at end of file
diff --git a/appveyor.yml b/appveyor.yml
deleted file mode 100644
index 482dcbf..0000000
--- a/appveyor.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-version: 9.0.1.{build}
-skip_tags: true
-max_jobs: 1
-image: Visual Studio 2022
-configuration: Release
-platform: Any CPU
-force_https_clone: true
-nuget:
- account_feed: false
- project_feed: false
-environment:
- NUGET_HOST: https://www.nuget.org
- NUGET_APIKEY:
- secure: GmL+s4FAMc4kMD/O+LST8XV2QXxjvpjV0muni1WttUxjwaQRXDwyXDRHpE3RvEl5
-build: off
-build_script:
-- ps: >-
- dotnet build .\DynamicExpression.sln;
-test: off
-test_script:
-- ps: >-
- dotnet test .\.tests\DynamicExpression.Test\DynamicExpression.Test.csproj
-artifacts:
-- path: '**\*.nupkg'
- name: NuGet Package
-- path: '**\*.snupkg'
- name: NuGet Symbol Package
-deploy:
-- provider: NuGet
- server: $(NUGET_HOST)
- api_key: $(NUGET_APIKEY)
- on:
- branch: master