From 3a96abc479f5c916557cdb82fe7d95a10f65f824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Kurzyniec?= Date: Wed, 9 Nov 2022 16:36:20 +0100 Subject: [PATCH 1/5] moved to Central Package Management --- Directory.Build.props | 15 +---- Directory.Packages.props | 66 +++++++++++++++++++ HappyCode.NetCoreBoilerplate.sln | 1 + README.md | 2 +- .../HappyCode.NetCoreBoilerplate.Api.csproj | 17 +++-- .../appsettings.json | 2 +- .../HappyCode.NetCoreBoilerplate.Core.csproj | 4 +- .../HappyCode.NetCoreBoilerplate.Db.csproj | 8 +-- ...oreBoilerplate.Api.IntegrationTests.csproj | 23 +++---- ...de.NetCoreBoilerplate.Api.LoadTests.csproj | 15 ++--- ...de.NetCoreBoilerplate.Api.UnitTests.csproj | 24 +++---- ...e.NetCoreBoilerplate.Core.UnitTests.csproj | 26 +++----- 12 files changed, 117 insertions(+), 86 deletions(-) create mode 100644 Directory.Packages.props diff --git a/Directory.Build.props b/Directory.Build.props index f1dc39a95..32bb31bb6 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -14,18 +14,5 @@ true true $(MSBuildThisFileDirectory)HappyCode.NetCoreBoilerplate.ruleset - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - all - runtime; build; native; contentfiles; analyzers - - + diff --git a/Directory.Packages.props b/Directory.Packages.props new file mode 100644 index 000000000..e7abaf1f9 --- /dev/null +++ b/Directory.Packages.props @@ -0,0 +1,66 @@ + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + all + runtime; build; native; contentfiles; analyzers + + + diff --git a/HappyCode.NetCoreBoilerplate.sln b/HappyCode.NetCoreBoilerplate.sln index c26d29955..562d3fd4f 100644 --- a/HappyCode.NetCoreBoilerplate.sln +++ b/HappyCode.NetCoreBoilerplate.sln @@ -21,6 +21,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig Directory.Build.props = Directory.Build.props + Directory.Packages.props = Directory.Packages.props docker-compose.yml = docker-compose.yml dockerfile = dockerfile HappyCode.NetCoreBoilerplate.ruleset = HappyCode.NetCoreBoilerplate.ruleset diff --git a/README.md b/README.md index b03061680..3cb29c5a3 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ of starting an empty project and adding the same snippets each time, you can use ## Source code contains +1. [Central Package Management (CPM)](https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management) 1. ~~[Autofac]~~(https://autofac.org/) (Removed in [PR19](https://github.com/lkurzyniec/netcore-boilerplate/pull/19)) 1. [Swagger](https://swagger.io/) + [Swashbuckle](https://github.com/domaindrivendev/Swashbuckle) 1. [FeatureManagement](https://github.com/microsoft/FeatureManagement-Dotnet) (Feature Flags, Feature Toggles) @@ -53,7 +54,6 @@ of starting an empty project and adding the same snippets each time, you can use * `netcore-boilerplate:local` 1. [Serilog](https://serilog.net/) * Sink: [Async](https://github.com/serilog/serilog-sinks-async) - * Enrich: [CorrelationId](https://github.com/ekmsystems/serilog-enrichers-correlation-id) 1. [DbUp](http://dbup.github.io/) as a db migration tool 1. Continuous integration * ~~[Travis CI]~~(https://travis-ci.org/) ([travisci.yml](https://github.com/lkurzyniec/netcore-boilerplate/blob/bf65154b63f6a10d6753045c49cd378e53907816/.travis.yml)) diff --git a/src/HappyCode.NetCoreBoilerplate.Api/HappyCode.NetCoreBoilerplate.Api.csproj b/src/HappyCode.NetCoreBoilerplate.Api/HappyCode.NetCoreBoilerplate.Api.csproj index c05129dbb..740370679 100644 --- a/src/HappyCode.NetCoreBoilerplate.Api/HappyCode.NetCoreBoilerplate.Api.csproj +++ b/src/HappyCode.NetCoreBoilerplate.Api/HappyCode.NetCoreBoilerplate.Api.csproj @@ -16,15 +16,14 @@ - - - - - - - - - + + + + + + + + diff --git a/src/HappyCode.NetCoreBoilerplate.Api/appsettings.json b/src/HappyCode.NetCoreBoilerplate.Api/appsettings.json index 1501dab41..5ebe68975 100644 --- a/src/HappyCode.NetCoreBoilerplate.Api/appsettings.json +++ b/src/HappyCode.NetCoreBoilerplate.Api/appsettings.json @@ -48,7 +48,7 @@ } } ], - "Enrich": [ "FromLogContext", "WithMachineName", "WithCorrelationIdHeader" ], + "Enrich": [ "FromLogContext", "WithMachineName" ], "Properties": { "Application": "HappyCode.NetCoreBoilerplate.Api" } diff --git a/src/HappyCode.NetCoreBoilerplate.Core/HappyCode.NetCoreBoilerplate.Core.csproj b/src/HappyCode.NetCoreBoilerplate.Core/HappyCode.NetCoreBoilerplate.Core.csproj index f24c76ecd..271f43029 100644 --- a/src/HappyCode.NetCoreBoilerplate.Core/HappyCode.NetCoreBoilerplate.Core.csproj +++ b/src/HappyCode.NetCoreBoilerplate.Core/HappyCode.NetCoreBoilerplate.Core.csproj @@ -5,7 +5,7 @@ - - + + diff --git a/src/HappyCode.NetCoreBoilerplate.Db/HappyCode.NetCoreBoilerplate.Db.csproj b/src/HappyCode.NetCoreBoilerplate.Db/HappyCode.NetCoreBoilerplate.Db.csproj index be02a052a..8a91f7bf1 100644 --- a/src/HappyCode.NetCoreBoilerplate.Db/HappyCode.NetCoreBoilerplate.Db.csproj +++ b/src/HappyCode.NetCoreBoilerplate.Db/HappyCode.NetCoreBoilerplate.Db.csproj @@ -11,9 +11,9 @@ - - - - + + + + diff --git a/test/HappyCode.NetCoreBoilerplate.Api.IntegrationTests/HappyCode.NetCoreBoilerplate.Api.IntegrationTests.csproj b/test/HappyCode.NetCoreBoilerplate.Api.IntegrationTests/HappyCode.NetCoreBoilerplate.Api.IntegrationTests.csproj index 17a62893b..b6b54d692 100644 --- a/test/HappyCode.NetCoreBoilerplate.Api.IntegrationTests/HappyCode.NetCoreBoilerplate.Api.IntegrationTests.csproj +++ b/test/HappyCode.NetCoreBoilerplate.Api.IntegrationTests/HappyCode.NetCoreBoilerplate.Api.IntegrationTests.csproj @@ -1,23 +1,16 @@ - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - + + + + + + + + - - - - diff --git a/test/HappyCode.NetCoreBoilerplate.Api.LoadTests/HappyCode.NetCoreBoilerplate.Api.LoadTests.csproj b/test/HappyCode.NetCoreBoilerplate.Api.LoadTests/HappyCode.NetCoreBoilerplate.Api.LoadTests.csproj index d9180b98c..9b5d7c582 100644 --- a/test/HappyCode.NetCoreBoilerplate.Api.LoadTests/HappyCode.NetCoreBoilerplate.Api.LoadTests.csproj +++ b/test/HappyCode.NetCoreBoilerplate.Api.LoadTests/HappyCode.NetCoreBoilerplate.Api.LoadTests.csproj @@ -1,12 +1,9 @@ - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + + + + diff --git a/test/HappyCode.NetCoreBoilerplate.Api.UnitTests/HappyCode.NetCoreBoilerplate.Api.UnitTests.csproj b/test/HappyCode.NetCoreBoilerplate.Api.UnitTests/HappyCode.NetCoreBoilerplate.Api.UnitTests.csproj index d3e322962..5dd524eaa 100644 --- a/test/HappyCode.NetCoreBoilerplate.Api.UnitTests/HappyCode.NetCoreBoilerplate.Api.UnitTests.csproj +++ b/test/HappyCode.NetCoreBoilerplate.Api.UnitTests/HappyCode.NetCoreBoilerplate.Api.UnitTests.csproj @@ -1,20 +1,14 @@ - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - + + + + + + + + + diff --git a/test/HappyCode.NetCoreBoilerplate.Core.UnitTests/HappyCode.NetCoreBoilerplate.Core.UnitTests.csproj b/test/HappyCode.NetCoreBoilerplate.Core.UnitTests/HappyCode.NetCoreBoilerplate.Core.UnitTests.csproj index e8677576a..ab1d15f50 100644 --- a/test/HappyCode.NetCoreBoilerplate.Core.UnitTests/HappyCode.NetCoreBoilerplate.Core.UnitTests.csproj +++ b/test/HappyCode.NetCoreBoilerplate.Core.UnitTests/HappyCode.NetCoreBoilerplate.Core.UnitTests.csproj @@ -1,21 +1,15 @@ - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - + + + + + + + + + + From 9628e568aac78333616ee238ef0baad5a0db4b68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Kurzyniec?= Date: Mon, 14 Nov 2022 12:21:49 +0100 Subject: [PATCH 2/5] migration to dotnet 7 --- .github/workflows/codeql-analysis.yml | 5 +++++ .github/workflows/dotnetcore.yml | 4 ++-- Directory.Build.props | 6 +++--- Directory.Packages.props | 18 +++++++++--------- HappyCode.NetCoreBoilerplate.sln | 7 +++++++ README.md | 2 +- dockerfile | 15 +++++++++------ 7 files changed, 36 insertions(+), 21 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index fc1164125..ce07f37d8 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -20,6 +20,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 + - name: Setup .NET Core + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 7.x + - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: diff --git a/.github/workflows/dotnetcore.yml b/.github/workflows/dotnetcore.yml index a5b8b8ad6..49b9054e4 100644 --- a/.github/workflows/dotnetcore.yml +++ b/.github/workflows/dotnetcore.yml @@ -28,7 +28,7 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v3 with: - dotnet-version: 6.0.x + dotnet-version: 7.x - name: Build sln run: dotnet build -c Release --no-cache /clp:NoSummary ./HappyCode.NetCoreBoilerplate.sln @@ -46,7 +46,7 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v3 with: - dotnet-version: 6.0.x + dotnet-version: 7.x - name: Collect code coverage run: dotnet test -c Release --filter FullyQualifiedName!~LoadTests /maxcpucount:1 /p:WarningLevel=0 /p:CollectCoverage=true /p:CoverletOutput="../" /p:MergeWith="../coverage.json" /p:CoverletOutputFormat=\"json,opencover\" ./HappyCode.NetCoreBoilerplate.sln diff --git a/Directory.Build.props b/Directory.Build.props index 32bb31bb6..c4e178089 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,13 +1,13 @@ - 10 - net6.0 + 11 + net7.0 Łukasz Kurzyniec Copyright © happy+code Łukasz Kurzyniec 2022 - 1.2.1 + 1.3.0 diff --git a/Directory.Packages.props b/Directory.Packages.props index e7abaf1f9..b6cbb035c 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,7 +3,7 @@ true false - + @@ -14,19 +14,19 @@ - + - + - + @@ -36,21 +36,21 @@ - + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all @@ -58,7 +58,7 @@ - + all runtime; build; native; contentfiles; analyzers diff --git a/HappyCode.NetCoreBoilerplate.sln b/HappyCode.NetCoreBoilerplate.sln index 562d3fd4f..87cdaa337 100644 --- a/HappyCode.NetCoreBoilerplate.sln +++ b/HappyCode.NetCoreBoilerplate.sln @@ -32,6 +32,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HappyCode.NetCoreBoilerplat EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HappyCode.NetCoreBoilerplate.Api.LoadTests", "test\HappyCode.NetCoreBoilerplate.Api.LoadTests\HappyCode.NetCoreBoilerplate.Api.LoadTests.csproj", "{E18EED63-7FDE-449B-9FA3-27FD677CD3FD}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ci", "ci", "{C20F30D0-1383-4834-805F-6526300F4D2D}" + ProjectSection(SolutionItems) = preProject + .github\workflows\codeql-analysis.yml = .github\workflows\codeql-analysis.yml + .github\workflows\docker.yml = .github\workflows\docker.yml + .github\workflows\dotnetcore.yml = .github\workflows\dotnetcore.yml + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/README.md b/README.md index 3cb29c5a3..fc9d094b2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # netcore-boilerplate -Boilerplate of API in ~~`.NET Core 3.1`~~ `.NET 6` +Boilerplate of API in ~~`.NET Core 3.1`~~ `.NET 7` | GitHub | Codecov | |:-------------:|:-------------:| diff --git a/dockerfile b/dockerfile index 726a80da3..c7dda1036 100644 --- a/dockerfile +++ b/dockerfile @@ -1,12 +1,13 @@ -FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build WORKDIR /work COPY ./Directory.Build.props ./ +COPY ./Directory.Packages.props ./ COPY src/*/*.csproj ./ RUN for projectFile in $(ls *.csproj); \ -do \ - mkdir -p ${projectFile%.*}/ && mv $projectFile ${projectFile%.*}/; \ -done + do \ + mkdir -p ${projectFile%.*}/ && mv $projectFile ${projectFile%.*}/; \ + done ENV DOTNET_NOLOGO=true ENV DOTNET_CLI_TELEMETRY_OPTOUT=true @@ -15,6 +16,8 @@ RUN dotnet restore /work/HappyCode.NetCoreBoilerplate.Api/HappyCode.NetCoreBoile COPY src . +# -------------- + FROM build AS publish WORKDIR /work/HappyCode.NetCoreBoilerplate.Api @@ -23,9 +26,9 @@ ENV DOTNET_CLI_TELEMETRY_OPTOUT=true RUN dotnet publish -c Release -o /app --no-restore -LABEL maintainer="Lukasz Kurzyniec (lkurzyniec@gmail.com)" +# -------------- -FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS final +FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS final WORKDIR /app COPY --from=publish /app . From 39d16c520c9b14aecfc7be91854682c7e943d2a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Kurzyniec?= Date: Sun, 22 Jan 2023 20:23:14 +0100 Subject: [PATCH 3/5] packages update --- Directory.Packages.props | 43 ++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index b6cbb035c..f8cfc30bf 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,30 +3,26 @@ true false - - + - + - - - + + - - - - - + + + + - @@ -34,31 +30,30 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - + + + + + + + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers From f6c49e09c347fa97c8501119219f4d96906258e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Kurzyniec?= Date: Sun, 22 Jan 2023 22:28:41 +0100 Subject: [PATCH 4/5] code fix after update --- docker-compose.yml | 2 +- src/HappyCode.NetCoreBoilerplate.Api/Startup.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index f0b64a5e8..3ca2d3f68 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,7 +21,7 @@ services: - ./db/mysql/mysql-employees.sql:/docker-entrypoint-initdb.d/init.sql mssql: - image: mcr.microsoft.com/mssql/server:2017-latest + image: mcr.microsoft.com/mssql/server:2019-latest container_name: mssql command: /bin/bash ./entrypoint.sh ports: diff --git a/src/HappyCode.NetCoreBoilerplate.Api/Startup.cs b/src/HappyCode.NetCoreBoilerplate.Api/Startup.cs index 775fe7d50..258a709de 100644 --- a/src/HappyCode.NetCoreBoilerplate.Api/Startup.cs +++ b/src/HappyCode.NetCoreBoilerplate.Api/Startup.cs @@ -43,7 +43,7 @@ public virtual void ConfigureServices(IServiceCollection services) .AddDataAnnotations(); //there is a difference between AddDbContext() and AddDbContextPool(), more info https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.0#dbcontext-pooling and https://stackoverflow.com/questions/48443567/adddbcontext-or-adddbcontextpool - services.AddDbContext(options => options.UseMySql(_configuration.GetConnectionString("MySqlDb"), ServerVersion.Parse("8")), contextLifetime: ServiceLifetime.Transient, optionsLifetime: ServiceLifetime.Singleton); + services.AddDbContext(options => options.UseMySql(_configuration.GetConnectionString("MySqlDb"), ServerVersion.Parse("8.0")), contextLifetime: ServiceLifetime.Transient, optionsLifetime: ServiceLifetime.Singleton); services.AddDbContextPool(options => options.UseSqlServer(_configuration.GetConnectionString("MsSqlDb")), poolSize: 10); services.Configure(_configuration.GetSection("ApiKey")); From 50fbe6253661c70c92cccbab1dc6b6a3b6aa05b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Kurzyniec?= Date: Sun, 22 Jan 2023 22:46:02 +0100 Subject: [PATCH 5/5] fixed docker-compose and prepopulation of mssql --- db/mssql/docker-db-init.sh | 11 ++++++----- db/mssql/docker-entrypoint.sh | 4 ++-- docker-compose.yml | 5 +++-- src/HappyCode.NetCoreBoilerplate.Api/appsettings.json | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/db/mssql/docker-db-init.sh b/db/mssql/docker-db-init.sh index 4dbb7575c..226f6f6f7 100644 --- a/db/mssql/docker-db-init.sh +++ b/db/mssql/docker-db-init.sh @@ -1,6 +1,7 @@ -#wait for the SQL Server to come up -sleep 30s +#!/bin/bash -echo "running set up script" -#run the setup script to create the DB and the schema in the DB -/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P SomeStrongPwd123 -d master -i db-init.sql +echo "waiting 20s for the SQL Server to come up..." +sleep 20s + +echo "running set up script..." +/opt/mssql-tools/bin/sqlcmd -S "localhost" -U sa -P "${MSSQL_SA_PASSWORD}" -d master -i db-init.sql diff --git a/db/mssql/docker-entrypoint.sh b/db/mssql/docker-entrypoint.sh index b29f02a63..57fea6f7a 100644 --- a/db/mssql/docker-entrypoint.sh +++ b/db/mssql/docker-entrypoint.sh @@ -1,2 +1,2 @@ -#start SQL Server, start the script to create/setup the DB - /db-init.sh & /opt/mssql/bin/sqlservr +#!/bin/bash +/db-init.sh & /opt/mssql/bin/sqlservr diff --git a/docker-compose.yml b/docker-compose.yml index 3ca2d3f68..d6101f36e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,14 +22,15 @@ services: mssql: image: mcr.microsoft.com/mssql/server:2019-latest + user: root container_name: mssql - command: /bin/bash ./entrypoint.sh + command: /bin/bash /entrypoint.sh ports: - 1433:1433 environment: - ACCEPT_EULA=Y - MSSQL_PID=Express - - SA_PASSWORD=SomeStrongPwd123 + - MSSQL_SA_PASSWORD=SomeStrongPwd123 volumes: - dbdata:/var/opt/mssql/data - ./db/mssql/docker-entrypoint.sh:/entrypoint.sh diff --git a/src/HappyCode.NetCoreBoilerplate.Api/appsettings.json b/src/HappyCode.NetCoreBoilerplate.Api/appsettings.json index 5ebe68975..f8173a272 100644 --- a/src/HappyCode.NetCoreBoilerplate.Api/appsettings.json +++ b/src/HappyCode.NetCoreBoilerplate.Api/appsettings.json @@ -1,7 +1,7 @@ { "ConnectionStrings": { "MySqlDb": "server=mysql;Database=employees;Uid=user;Pwd=simplepwd;", - "MsSqlDb": "Data Source=mssql;Initial Catalog=cars;User ID=user;Password=simplePWD123!" + "MsSqlDb": "Data Source=mssql;Initial Catalog=cars;User ID=user;Password=simplePWD123!;TrustServerCertificate=true;" }, "PingWebsite": {