Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions .github/workflows/domain-abstractions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: CI/CD - Domain.Abstractions

on:
push:
branches: [ master, main ]
paths:
- 'src/Domain/Intervals.NET.Domain.Abstractions/**'
- '.github/workflows/domain-abstractions.yml'
pull_request:
branches: [ master, main ]
paths:
- 'src/Domain/Intervals.NET.Domain.Abstractions/**'
- '.github/workflows/domain-abstractions.yml'
workflow_dispatch:

env:
DOTNET_VERSION: '8.x.x'
PROJECT_PATH: 'src/Domain/Intervals.NET.Domain.Abstractions/Intervals.NET.Domain.Abstractions.csproj'

jobs:
build-and-test:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Restore dependencies
run: dotnet restore ${{ env.PROJECT_PATH }}

- name: Build Domain.Abstractions
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore

publish-nuget:
runs-on: ubuntu-latest
needs: build-and-test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Restore dependencies
run: dotnet restore ${{ env.PROJECT_PATH }}

- name: Build Domain.Abstractions
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore

- name: Pack Domain.Abstractions
run: dotnet pack ${{ env.PROJECT_PATH }} --configuration Release --no-build --output ./artifacts

- name: Publish Domain.Abstractions to NuGet
run: dotnet nuget push ./artifacts/Intervals.NET.Domain.Abstractions.*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate

- name: Upload package artifacts
uses: actions/upload-artifact@v4
with:
name: domain-abstractions-package
path: ./artifacts/*.nupkg
77 changes: 77 additions & 0 deletions .github/workflows/domain-default.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: CI/CD - Domain.Default

on:
push:
branches: [ master, main ]
paths:
- 'src/Domain/Intervals.NET.Domain.Default/**'
- 'src/Domain/Intervals.NET.Domain.Abstractions/**'
- 'tests/Intervals.NET.Domain.Default.Tests/**'
- '.github/workflows/domain-default.yml'
pull_request:
branches: [ master, main ]
paths:
- 'src/Domain/Intervals.NET.Domain.Default/**'
- 'src/Domain/Intervals.NET.Domain.Abstractions/**'
- 'tests/Intervals.NET.Domain.Default.Tests/**'
- '.github/workflows/domain-default.yml'
workflow_dispatch:

env:
DOTNET_VERSION: '8.x.x'
PROJECT_PATH: 'src/Domain/Intervals.NET.Domain.Default/Intervals.NET.Domain.Default.csproj'
TEST_PATH: 'tests/Intervals.NET.Domain.Default.Tests/Intervals.NET.Domain.Default.Tests.csproj'

jobs:
build-and-test:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Restore dependencies
run: dotnet restore ${{ env.PROJECT_PATH }}

- name: Build Domain.Default
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore

- name: Run Domain.Default tests
run: dotnet test ${{ env.TEST_PATH }} --configuration Release --verbosity normal

publish-nuget:
runs-on: ubuntu-latest
needs: build-and-test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Restore dependencies
run: dotnet restore ${{ env.PROJECT_PATH }}

- name: Build Domain.Default
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore

- name: Pack Domain.Default
run: dotnet pack ${{ env.PROJECT_PATH }} --configuration Release --no-build --output ./artifacts

- name: Publish Domain.Default to NuGet
run: dotnet nuget push ./artifacts/Intervals.NET.Domain.Default.*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate

- name: Upload package artifacts
uses: actions/upload-artifact@v4
with:
name: domain-default-package
path: ./artifacts/*.nupkg
79 changes: 79 additions & 0 deletions .github/workflows/domain-extensions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: CI/CD - Domain.Extensions

on:
push:
branches: [ master, main ]
paths:
- 'src/Domain/Intervals.NET.Domain.Extensions/**'
- 'src/Domain/Intervals.NET.Domain.Abstractions/**'
- 'src/Intervals.NET/**'
- 'tests/Intervals.NET.Domain.Extensions.Tests/**'
- '.github/workflows/domain-extensions.yml'
pull_request:
branches: [ master, main ]
paths:
- 'src/Domain/Intervals.NET.Domain.Extensions/**'
- 'src/Domain/Intervals.NET.Domain.Abstractions/**'
- 'src/Intervals.NET/**'
- 'tests/Intervals.NET.Domain.Extensions.Tests/**'
- '.github/workflows/domain-extensions.yml'
workflow_dispatch:

env:
DOTNET_VERSION: '8.x.x'
PROJECT_PATH: 'src/Domain/Intervals.NET.Domain.Extensions/Intervals.NET.Domain.Extensions.csproj'
TEST_PATH: 'tests/Intervals.NET.Domain.Extensions.Tests/Intervals.NET.Domain.Extensions.Tests.csproj'

jobs:
build-and-test:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Restore dependencies
run: dotnet restore ${{ env.PROJECT_PATH }}

- name: Build Domain.Extensions
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore

- name: Run Domain.Extensions tests
run: dotnet test ${{ env.TEST_PATH }} --configuration Release --verbosity normal

publish-nuget:
runs-on: ubuntu-latest
needs: build-and-test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Restore dependencies
run: dotnet restore ${{ env.PROJECT_PATH }}

- name: Build Domain.Extensions
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore

- name: Pack Domain.Extensions
run: dotnet pack ${{ env.PROJECT_PATH }} --configuration Release --no-build --output ./artifacts

- name: Publish Domain.Extensions to NuGet
run: dotnet nuget push ./artifacts/Intervals.NET.Domain.Extensions.*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate

- name: Upload package artifacts
uses: actions/upload-artifact@v4
with:
name: domain-extensions-package
path: ./artifacts/*.nupkg
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@ on:
paths:
- 'src/Intervals.NET/**'
- 'tests/Intervals.NET.Tests/**'
- '*.sln'
- '.github/workflows/intervals-net.yml'
pull_request:
branches: [ master, main ]
paths:
- 'src/Intervals.NET/**'
- 'tests/Intervals.NET.Tests/**'
- '*.sln'
workflow_dispatch:

env:
Expand All @@ -34,18 +33,27 @@ jobs:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Restore dependencies
run: dotnet restore
run: dotnet restore ${{ env.TEST_PATH }}

- name: Build solution
run: dotnet build --configuration Release --no-restore /p:DefineConstants=UNIT_TESTS
- name: Build test project and dependencies
run: dotnet build ${{ env.TEST_PATH }} --configuration Release --no-restore

- name: Run tests
run: dotnet test ${{ env.TEST_PATH }} --configuration Release --no-build --verbosity normal
- name: Run Intervals.NET tests with coverage
run: dotnet test ${{ env.TEST_PATH }} --configuration Release --no-build --verbosity normal --collect:"XPlat Code Coverage" --results-directory ./TestResults

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4
with:
files: ./TestResults/**/coverage.cobertura.xml
fail_ci_if_error: false
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

publish-nuget:
runs-on: ubuntu-latest
needs: build-and-test
if: github.ref == 'refs/heads/main'
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

steps:
- name: Checkout code
Expand All @@ -57,7 +65,7 @@ jobs:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Restore dependencies
run: dotnet restore
run: dotnet restore ${{ env.PROJECT_PATH }}

- name: Build Intervals.NET
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore
Expand Down
59 changes: 55 additions & 4 deletions Intervals.NET.sln
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionItems", "SolutionItems", "{5D2B78C6-39CB-44C2-9E02-57CE792FEC93}"
ProjectSection(SolutionItems) = preProject
README.md = README.md
.github\workflows\ci-cd.yml = .github\workflows\ci-cd.yml
.github\workflows\domain-abstractions.yml = .github\workflows\domain-abstractions.yml
.github\workflows\domain-default.yml = .github\workflows\domain-default.yml
.github\workflows\domain-extensions.yml = .github\workflows\domain-extensions.yml
.github\workflows\intervals-net.yml = .github\workflows\intervals-net.yml
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{EAF02F30-A5E4-4237-B402-6F946F2B2C09}"
Expand All @@ -16,9 +19,6 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Tests", "tests\Intervals.NET.Tests\Intervals.NET.Tests.csproj", "{8703AF16-1CD4-40CF-81B4-3579FDF858EF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarks", "benchmarks", "{479FF156-A58F-4508-8EF5-A7A3DCD4C643}"
ProjectSection(SolutionItems) = preProject
benchmarks\BENCHMARK-ANALYSIS.md = benchmarks\BENCHMARK-ANALYSIS.md
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Benchmarks", "benchmarks\Intervals.NET.Benchmarks\Intervals.NET.Benchmarks.csproj", "{C3ECBB81-C7E1-4B63-9284-74A48BD14305}"
EndProject
Expand All @@ -29,8 +29,32 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Results", "Results", "{F375
benchmarks\Results\Intervals.NET.Benchmarks.ParsingBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.ParsingBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.RealWorldScenariosBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.RealWorldScenariosBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.SetOperationsBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.SetOperationsBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.ConstructionBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.ConstructionBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.ContainmentBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.ContainmentBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.CrossGranularityDomainBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.CrossGranularityDomainBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.DomainHotPathScenariosBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.DomainHotPathScenariosBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.DomainOperationsBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.DomainOperationsBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.FixedStepExtensionsBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.FixedStepExtensionsBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.ParsingBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.ParsingBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.RealWorldScenariosBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.RealWorldScenariosBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.SetOperationsBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.SetOperationsBenchmarks-report-github.md
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.VariableStepDomainBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.VariableStepDomainBenchmarks-report-github.md
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Domain.Abstractions", "src\Domain\Intervals.NET.Domain.Abstractions\Intervals.NET.Domain.Abstractions.csproj", "{EE258066-15D2-413B-B2F5-9122A0FA2387}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Domain", "Domain", "{BE05E07A-0EF1-4AAA-A12E-88A89AE715A4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Domain.Extensions", "src\Domain\Intervals.NET.Domain.Extensions\Intervals.NET.Domain.Extensions.csproj", "{AA13C99C-EDBD-4933-A1AC-D896772B6F18}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Domain.Default", "src\Domain\Intervals.NET.Domain.Default\Intervals.NET.Domain.Default.csproj", "{23F763C3-E80F-4CDB-A56B-EE2A9E84BCFE}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Domain", "Domain", "{592DCBFE-8570-44E3-B9DD-351AA775BFC8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Domain.Default.Tests", "tests\Intervals.NET.Domain.Default.Tests\Intervals.NET.Domain.Default.Tests.csproj", "{EAC4D033-A7D7-4242-8661-3F231257B4FE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Domain.Extensions.Tests", "tests\Intervals.NET.Domain.Extensions.Tests\Intervals.NET.Domain.Extensions.Tests.csproj", "{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -49,11 +73,38 @@ Global
{C3ECBB81-C7E1-4B63-9284-74A48BD14305}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C3ECBB81-C7E1-4B63-9284-74A48BD14305}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C3ECBB81-C7E1-4B63-9284-74A48BD14305}.Release|Any CPU.Build.0 = Release|Any CPU
{EE258066-15D2-413B-B2F5-9122A0FA2387}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EE258066-15D2-413B-B2F5-9122A0FA2387}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EE258066-15D2-413B-B2F5-9122A0FA2387}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EE258066-15D2-413B-B2F5-9122A0FA2387}.Release|Any CPU.Build.0 = Release|Any CPU
{AA13C99C-EDBD-4933-A1AC-D896772B6F18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AA13C99C-EDBD-4933-A1AC-D896772B6F18}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AA13C99C-EDBD-4933-A1AC-D896772B6F18}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AA13C99C-EDBD-4933-A1AC-D896772B6F18}.Release|Any CPU.Build.0 = Release|Any CPU
{23F763C3-E80F-4CDB-A56B-EE2A9E84BCFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{23F763C3-E80F-4CDB-A56B-EE2A9E84BCFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{23F763C3-E80F-4CDB-A56B-EE2A9E84BCFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{23F763C3-E80F-4CDB-A56B-EE2A9E84BCFE}.Release|Any CPU.Build.0 = Release|Any CPU
{EAC4D033-A7D7-4242-8661-3F231257B4FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EAC4D033-A7D7-4242-8661-3F231257B4FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EAC4D033-A7D7-4242-8661-3F231257B4FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EAC4D033-A7D7-4242-8661-3F231257B4FE}.Release|Any CPU.Build.0 = Release|Any CPU
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{A2F7DF66-08BE-438A-A354-C09499B8B8B7} = {EAF02F30-A5E4-4237-B402-6F946F2B2C09}
{8703AF16-1CD4-40CF-81B4-3579FDF858EF} = {28A5727D-3EDB-4F19-8B68-1DBD790EB8E2}
{C3ECBB81-C7E1-4B63-9284-74A48BD14305} = {479FF156-A58F-4508-8EF5-A7A3DCD4C643}
{F3754280-1B2F-4C7C-9BD0-E54001301567} = {479FF156-A58F-4508-8EF5-A7A3DCD4C643}
{BE05E07A-0EF1-4AAA-A12E-88A89AE715A4} = {EAF02F30-A5E4-4237-B402-6F946F2B2C09}
{EE258066-15D2-413B-B2F5-9122A0FA2387} = {BE05E07A-0EF1-4AAA-A12E-88A89AE715A4}
{AA13C99C-EDBD-4933-A1AC-D896772B6F18} = {BE05E07A-0EF1-4AAA-A12E-88A89AE715A4}
{23F763C3-E80F-4CDB-A56B-EE2A9E84BCFE} = {BE05E07A-0EF1-4AAA-A12E-88A89AE715A4}
{592DCBFE-8570-44E3-B9DD-351AA775BFC8} = {28A5727D-3EDB-4F19-8B68-1DBD790EB8E2}
{EAC4D033-A7D7-4242-8661-3F231257B4FE} = {592DCBFE-8570-44E3-B9DD-351AA775BFC8}
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25} = {592DCBFE-8570-44E3-B9DD-351AA775BFC8}
EndGlobalSection
EndGlobal
Loading