Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V9.0.0/rtm #102

Merged
merged 10 commits into from
Nov 13, 2024
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
2 changes: 1 addition & 1 deletion .docfx/includes/availability-all.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Availability: .NET 8, .NET 6, .NET Standard 2.1 and .NET Standard 2.0
Availability: .NET 9, .NET 8, .NET Standard 2.1 and .NET Standard 2.0
2 changes: 1 addition & 1 deletion .docfx/includes/availability-default.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Availability: .NET 8, .NET 6 and .NET Standard 2.0
Availability: .NET 9, .NET 8 and .NET Standard 2.0
2 changes: 1 addition & 1 deletion .docfx/includes/availability-hybrid.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Availability: .NET 8, .NET 6 and .NET Standard 2.0 (when applicable) or .NET Standard 2.1 (when applicable)
Availability: .NET 9, .NET 8 and .NET Standard 2.0 (when applicable) or .NET Standard 2.1 (when applicable)
2 changes: 1 addition & 1 deletion .docfx/includes/availability-modern.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Availability: .NET 8 and .NET 6
Availability: .NET 9 and .NET 8
8 changes: 0 additions & 8 deletions .docfx/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,5 @@
href: api/extensions/aspnet/Cuemon.Extensions.AspNetCore.Configuration.html
- name: Other Projects
href: api/extensions
expanded: true
items:
- name: Json.NET API
href: api/extensions/jsonnet/Cuemon.Extensions.Newtonsoft.Json.html
- name: Swashbuckle.AspNetCore API
href: api/extensions/swagger/Cuemon.Extensions.Swashbuckle.AspNetCore.html
- name: AWS Signature API
href: api/extensions/awssignature4/Cuemon.Extensions.AspNetCore.Authentication.AwsSignature4.html
- name: NuGet
href: packages
166 changes: 166 additions & 0 deletions .github/workflows/delayed-pipelines.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
name: Cuemon CI/CD Pipeline (Delayed)
on:
pull_request:
paths-ignore:
- .codecov/**
- .docfx/**
- .github/**
- .nuget/**
- '**.md'
workflow_dispatch:
inputs:
configuration:
type: choice
description: The build configuration to use in the deploy stage.
required: true
default: Release
options:
- Debug
- Release

jobs:
prepare_linux:
name: 🐧 Prepare Linux
runs-on: ubuntu-22.04
timeout-minutes: 15
outputs:
restoreCacheKey: ${{ steps.dotnet-restore.outputs.restoreCacheKey }}
steps:
- name: Checkout
uses: codebeltnet/git-checkout@v1

- name: Install .NET
uses: codebeltnet/install-dotnet@v1
with:
includePreview: true
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Remove unnecessary includePreview: true flag from workflow

No projects target preview .NET versions. Consider removing the includePreview: true setting to streamline the pipeline.

  • .github/workflows/delayed-pipelines.yml:35
🔗 Analysis chain

Review the inclusion of preview .NET versions in production pipeline

The includePreview: true flag is set for .NET installation. Consider if preview versions are necessary for your production pipeline, as they might introduce instability.

Also applies to: 56-56

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if any projects specifically require preview .NET versions
rg -l "TargetFramework.*preview" "**/*.csproj"

Length of output: 100


Script:

#!/bin/bash
# List all .csproj files in the repository
fd -e csproj

Length of output: 5820


Script:

#!/bin/bash
# Search for TargetFramework entries with 'preview' in .csproj files
fd -e csproj --exec rg "TargetFramework.*preview"

Length of output: 51


- id: dotnet-restore
name: Restore Dependencies
uses: codebeltnet/dotnet-restore@v2
with:
useRestoreCache: true

prepare_windows:
name: 🪟 Prepare Windows
runs-on: windows-2022
timeout-minutes: 15
outputs:
restoreCacheKey: ${{ steps.dotnet-restore.outputs.restoreCacheKey }}
steps:
- name: Checkout
uses: codebeltnet/git-checkout@v1

- name: Install .NET
uses: codebeltnet/install-dotnet@v1
with:
includePreview: true

- id: dotnet-restore
name: Restore Dependencies
uses: codebeltnet/dotnet-restore@v2
with:
useRestoreCache: true

build:
name: 🛠️ Build
runs-on: ubuntu-22.04
timeout-minutes: 15
strategy:
matrix:
configuration: [Debug, Release]
framework: [net9.0, net8.0, netstandard2.0]
needs: [prepare_linux]
outputs:
version: ${{ steps.minver-calculate.outputs.version }}
projects: ${{ steps.projects.outputs.result }}
steps:
- name: Checkout
uses: codebeltnet/git-checkout@v1

- name: Install .NET
uses: codebeltnet/install-dotnet@v1
with:
includePreview: true

- name: Install MinVer
uses: codebeltnet/dotnet-tool-install-minver@v1

- id: minver-calculate
name: Calculate Version
uses: codebeltnet/minver-calculate@v2

- name: Download cuemon.snk file
uses: codebeltnet/gcp-download-file@v1
with:
serviceAccountKey: ${{ secrets.GCP_TOKEN }}
bucketName: ${{ secrets.GCP_BUCKETNAME }}
objectName: cuemon.snk

- id: projects
name: Set environment variable for projects
run: |
if [ "${{ matrix.framework }}" == "netstandard2.0" ]; then
projects=(
"src/**/Cuemon.Extensions.Globalization.csproj"
)
echo "result=$(IFS=' '; echo "${projects[*]}")" >> $GITHUB_OUTPUT
else
projects=(
"src/**/Cuemon.Core.App.csproj"
"src/**/Cuemon.Extensions.Globalization.csproj"
)
echo "result=$(IFS=' '; echo "${projects[*]}")" >> $GITHUB_OUTPUT
fi
shell: bash

- id: dotnet-build
name: Build for ${{ matrix.framework }} (${{ matrix.configuration }})
uses: codebeltnet/dotnet-build@v2
with:
projects: ${{ steps.projects.outputs.result }}
configuration: ${{ matrix.configuration }}
framework: ${{ matrix.framework }}
restoreCacheKey: ${{ needs.prepare_linux.outputs.restoreCacheKey }}
uploadBuildArtifactName: 'DelayedBuild.${{ matrix.framework }}.${{ matrix.configuration }}'

pack:
name: 📦 Pack
runs-on: ubuntu-22.04
timeout-minutes: 15
strategy:
matrix:
configuration: [Debug, Release]
needs: [prepare_linux, build]
steps:
- name: Checkout
uses: codebeltnet/git-checkout@v1

- name: Install .NET
uses: codebeltnet/install-dotnet@v1
with:
includePreview: true

- name: Pack for ${{ matrix.configuration }}
uses: codebeltnet/dotnet-pack@v2
with:
configuration: ${{ matrix.configuration }}
uploadPackedArtifact: true
version: ${{ needs.build.outputs.version }}
restoreCacheKey: ${{ needs.prepare_linux.outputs.restoreCacheKey }}
downloadBuildArtifactPattern: 'DelayedBuild.*.${{ matrix.configuration }}'
uploadPackedArtifactName: 'NuGet-Delayed-${{ matrix.configuration }}'
projects: ${{ needs.build.outputs.projects }}

deploy:
if: github.event_name != 'pull_request'
name: 🚀 Deploy v${{ needs.build.outputs.version }}
runs-on: ubuntu-22.04
timeout-minutes: 15
needs: [build, pack]
environment: Production
steps:
- uses: codebeltnet/nuget-push@v1
with:
token: ${{ secrets.NUGET_TOKEN }}
configuration: ${{ inputs.configuration == '' && 'Release' || inputs.configuration }}
downloadBuildArtifactName: NuGet-Delayed-${{ inputs.configuration == '' && 'Release' || inputs.configuration }}
57 changes: 51 additions & 6 deletions .github/workflows/pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ jobs:
needs: [prepare_linux]
outputs:
version: ${{ steps.minver-calculate.outputs.version }}
projects: ${{ steps.projects.outputs.result }}
testProjects: ${{ steps.test-projects.outputs.result }}
steps:
- name: Checkout
Expand All @@ -96,10 +97,11 @@ jobs:
bucketName: ${{ secrets.GCP_BUCKETNAME }}
objectName: cuemon.snk

- name: Set environment variable for projects
- id: projects
name: Set environment variable for projects
run: |
if [ "${{ matrix.framework }}" == "netstandard2.1" ]; then
echo "PROJECTS=src/**/Cuemon.Extensions.IO.csproj src/**/Cuemon.IO.csproj" >> $GITHUB_ENV
echo "result=src/**/Cuemon.Extensions.IO.csproj src/**/Cuemon.IO.csproj" >> $GITHUB_OUTPUT
elif [ "${{ matrix.framework }}" == "netstandard2.0" ]; then
projects=(
"src/**/Cuemon.Core.csproj"
Expand All @@ -114,7 +116,6 @@ jobs:
"src/**/Cuemon.Extensions.Data.Integrity.csproj"
"src/**/Cuemon.Extensions.DependencyInjection.csproj"
"src/**/Cuemon.Extensions.Diagnostics.csproj"
"src/**/Cuemon.Extensions.Globalization.csproj"
"src/**/Cuemon.Extensions.Hosting.csproj"
"src/**/Cuemon.Extensions.IO.csproj"
"src/**/Cuemon.Extensions.Net.csproj"
Expand All @@ -132,17 +133,60 @@ jobs:
"src/**/Cuemon.Threading.csproj"
"src/**/Cuemon.Xml.csproj"
)
echo "PROJECTS=$(IFS=' '; echo "${projects[*]}")" >> $GITHUB_ENV
echo "result=$(IFS=' '; echo "${projects[*]}")" >> $GITHUB_OUTPUT
else
echo "PROJECTS=src/**/*.csproj" >> $GITHUB_ENV
projects=(
"src/**/Cuemon.AspNetCore.csproj"
"src/**/Cuemon.AspNetCore.App.csproj"
"src/**/Cuemon.AspNetCore.Authentication.csproj"
"src/**/Cuemon.AspNetCore.Mvc.csproj"
"src/**/Cuemon.AspNetCore.Razor.TagHelpers.csproj"
"src/**/Cuemon.Core.csproj"
"src/**/Cuemon.Data.csproj"
"src/**/Cuemon.Data.Integrity.csproj"
"src/**/Cuemon.Data.SqlClient.csproj"
"src/**/Cuemon.Diagnostics.csproj"
"src/**/Cuemon.Extensions.AspNetCore.csproj"
"src/**/Cuemon.Extensions.AspNetCore.Authentication.csproj"
"src/**/Cuemon.Extensions.AspNetCore.Mvc.csproj"
"src/**/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json.csproj"
"src/**/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml.csproj"
"src/**/Cuemon.Extensions.AspNetCore.Mvc.RazorPages.csproj"
"src/**/Cuemon.Extensions.AspNetCore.Text.Json.csproj"
"src/**/Cuemon.Extensions.AspNetCore.Xml.csproj"
"src/**/Cuemon.Extensions.Collections.Generic.csproj"
"src/**/Cuemon.Extensions.Collections.Specialized.csproj"
"src/**/Cuemon.Extensions.Core.csproj"
"src/**/Cuemon.Extensions.Data.csproj"
"src/**/Cuemon.Extensions.Data.Integrity.csproj"
"src/**/Cuemon.Extensions.DependencyInjection.csproj"
"src/**/Cuemon.Extensions.Diagnostics.csproj"
"src/**/Cuemon.Extensions.Hosting.csproj"
"src/**/Cuemon.Extensions.IO.csproj"
"src/**/Cuemon.Extensions.Net.csproj"
"src/**/Cuemon.Extensions.Reflection.csproj"
"src/**/Cuemon.Extensions.Runtime.Caching.csproj"
"src/**/Cuemon.Extensions.Text.csproj"
"src/**/Cuemon.Extensions.Text.Json.csproj"
"src/**/Cuemon.Extensions.Threading.csproj"
"src/**/Cuemon.Extensions.Xml.csproj"
"src/**/Cuemon.IO.csproj"
"src/**/Cuemon.Net.csproj"
"src/**/Cuemon.Resilience.csproj"
"src/**/Cuemon.Runtime.Caching.csproj"
"src/**/Cuemon.Security.Cryptography.csproj"
"src/**/Cuemon.Threading.csproj"
"src/**/Cuemon.Xml.csproj"
)
echo "result=$(IFS=' '; echo "${projects[*]}")" >> $GITHUB_OUTPUT
fi
shell: bash

- id: dotnet-build
name: Build for ${{ matrix.framework }} (${{ matrix.configuration }})
uses: codebeltnet/dotnet-build@v2
with:
projects: ${{ env.PROJECTS }}
projects: ${{ steps.projects.outputs.result }}
configuration: ${{ matrix.configuration }}
framework: ${{ matrix.framework }}
restoreCacheKey: ${{ needs.prepare_linux.outputs.restoreCacheKey }}
Expand Down Expand Up @@ -177,6 +221,7 @@ jobs:
uploadPackedArtifact: true
version: ${{ needs.build.outputs.version }}
restoreCacheKey: ${{ needs.prepare_linux.outputs.restoreCacheKey }}
projects: ${{ needs.build.outputs.projects }}

test:
name: 🧪 Test
Expand Down
37 changes: 15 additions & 22 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -1,38 +1,34 @@
<Project>

<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>

<ItemGroup>
<PackageVersion Include="AutoFixture" Version="4.18.1" />
<PackageVersion Include="Backport.System.Threading.Lock" Version="2.0.5" />
<PackageVersion Include="Codebelt.Extensions.Xunit" Version="9.0.0-preview.11" />
<PackageVersion Include="Codebelt.Extensions.Xunit.Hosting" Version="9.0.0-preview.11" />
<PackageVersion Include="Codebelt.Extensions.Xunit.Hosting.AspNetCore" Version="9.0.0-preview.11" />
<PackageVersion Include="Codebelt.Extensions.YamlDotNet" Version="9.0.0-preview.5" />
<PackageVersion Include="Backport.System.Threading.Lock" Version="2.0.7" />
<PackageVersion Include="Codebelt.Extensions.Xunit" Version="9.0.0-rc.1" />
<PackageVersion Include="Codebelt.Extensions.Xunit.Hosting" Version="9.0.0-rc.1" />
<PackageVersion Include="Codebelt.Extensions.Xunit.Hosting.AspNetCore" Version="9.0.0-rc.1" />
<PackageVersion Include="Codebelt.Extensions.YamlDotNet" Version="9.0.0-rc.1" />
<PackageVersion Include="Meziantou.Xunit.ParallelTestFramework" Version="2.3.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
<PackageVersion Include="Microsoft.TestPlatform.ObjectModel" Version="17.10.0" />
<PackageVersion Include="MinVer" Version="6.0.0" />
<PackageVersion Include="NativeLibraryLoader" Version="1.0.13" />
<PackageVersion Include="System.Data.SqlClient" Version="4.8.6" />
<PackageVersion Include="System.Data.SqlClient" Version="4.9.0" />
<PackageVersion Include="Xunit.Priority" Version="1.1.6" />
<PackageVersion Include="coverlet.collector" Version="6.0.2" />
<PackageVersion Include="coverlet.msbuild" Version="6.0.2" />
<PackageVersion Include="xunit" Version="2.9.2" />
<PackageVersion Include="xunit.runner.console" Version="2.9.2" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />
</ItemGroup>

<ItemGroup Condition="$(TargetFramework.StartsWith('net4'))">
<PackageVersion Include="Microsoft.Data.Sqlite" Version="6.0.35" />
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
</ItemGroup>

<ItemGroup Condition="$(TargetFramework.StartsWith('netstandard2'))">
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="2.1.1" />
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.1.1" />
<PackageVersion Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.1.1" />
Expand All @@ -41,10 +37,9 @@
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="2.1.1" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="2.1.1" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.1.1" />
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.5.4" />
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.6.0" />
<PackageVersion Include="System.Text.Json" Version="8.0.5" />
</ItemGroup>

<ItemGroup Condition="$(TargetFramework.StartsWith('net8'))">
<PackageVersion Include="Microsoft.Data.Sqlite" Version="8.0.10" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
Expand All @@ -53,14 +48,12 @@
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
<PackageVersion Include="System.Text.Json" Version="8.0.5" />
</ItemGroup>

<ItemGroup Condition="$(TargetFramework.StartsWith('net9'))">
<PackageVersion Include="Microsoft.Data.Sqlite" Version="9.0.0-rc.2.24474.1" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="System.Text.Json" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Data.Sqlite" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.0" />
<PackageVersion Include="System.Text.Json" Version="9.0.0" />
</ItemGroup>

</Project>
</Project>
2 changes: 1 addition & 1 deletion testenvironments.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
{
"name": "Docker-Ubuntu",
"type": "docker",
"dockerImage": "gimlichael/ubuntu-testrunner:net6.0.427-net8.0.403-9.0.100-rc.2.24474.11"
"dockerImage": "gimlichael/ubuntu-testrunner:net8.0.404-9.0.100"
}
]
}
Loading