From 386d23721af5cb15683f53cbe54640913285b3be Mon Sep 17 00:00:00 2001 From: yiyun Date: Wed, 13 Mar 2024 05:39:36 +0800 Subject: [PATCH 01/16] =?UTF-8?q?feat(src/knifehub.web):=20log=20=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=80=89=E9=A1=B9,=20=E8=BE=93=E5=87=BA.NET=E7=89=88?= =?UTF-8?q?=E6=9C=AC,=20Swagger=E6=97=A0=E6=B3=A8=E9=87=8A=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=A4=B1=E8=B4=A5,add=20net7.0;8.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/KnifeHub.Web/Config/ConfigOptions.cs | 20 ++++++-- .../Controllers/HomeController.cs | 6 ++- src/KnifeHub.Web/KnifeHub.Web.csproj | 9 +++- src/KnifeHub.Web/Program.cs | 15 ++++-- src/KnifeHub.Web/Utils/DotNetUtil.cs | 51 +++++++++++++++++++ src/KnifeHub.Web/appsettings.json | 6 ++- 6 files changed, 97 insertions(+), 10 deletions(-) create mode 100644 src/KnifeHub.Web/Utils/DotNetUtil.cs diff --git a/src/KnifeHub.Web/Config/ConfigOptions.cs b/src/KnifeHub.Web/Config/ConfigOptions.cs index d3642df93..19035aaf2 100644 --- a/src/KnifeHub.Web/Config/ConfigOptions.cs +++ b/src/KnifeHub.Web/Config/ConfigOptions.cs @@ -2,10 +2,24 @@ namespace KnifeHub.Web.Config { public class ConfigOptions { - public const string Config = "KnifeHub"; + public const string Config = nameof(KnifeHub); - public bool AllowAllCors { get; set; } + public ConfigOptions() + { + this.Log = new LogModel(); + } + + public bool AllowAllCors { get; set; } = false; public List CorsWhiteList { get; set; } + + public LogModel Log { get; set; } + + public class LogModel + { + public int RetainedFileCountLimit { get; set; } = 31; + + public int RetainedFileTimeLimitDays { get; set; } = 31; + } } -} \ No newline at end of file +} diff --git a/src/KnifeHub.Web/Controllers/HomeController.cs b/src/KnifeHub.Web/Controllers/HomeController.cs index 2587fa204..ddf3cd061 100644 --- a/src/KnifeHub.Web/Controllers/HomeController.cs +++ b/src/KnifeHub.Web/Controllers/HomeController.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using PluginCore.Interfaces; using PluginCore.IPlugins; @@ -11,6 +11,10 @@ namespace KnifeHub.Web.Controllers [ApiController] public class HomeController : ControllerBase { + /// + /// 首页 + /// + /// [Route("")] [HttpGet] public async Task Index() diff --git a/src/KnifeHub.Web/KnifeHub.Web.csproj b/src/KnifeHub.Web/KnifeHub.Web.csproj index 9828226fe..dfa938939 100644 --- a/src/KnifeHub.Web/KnifeHub.Web.csproj +++ b/src/KnifeHub.Web/KnifeHub.Web.csproj @@ -1,8 +1,9 @@  - net6.0 - false + net6.0;net7.0;net8.0 + true + true enable enable True @@ -18,6 +19,10 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/src/KnifeHub.Web/Program.cs b/src/KnifeHub.Web/Program.cs index 170d45336..888dd8b02 100644 --- a/src/KnifeHub.Web/Program.cs +++ b/src/KnifeHub.Web/Program.cs @@ -28,6 +28,14 @@ public class Program public static void Main(string[] args) { + #region 配置选项 + var config = new ConfigurationBuilder() + .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) + .Build(); + ConfigOptions configOptions = new ConfigOptions(); + config.GetSection(ConfigOptions.Config).Bind(configOptions); + #endregion + // https://github.com/serilog/serilog-aspnetcore // https://github.com/serilog/serilog/wiki/Getting-Started // Serilog.AspNetCore 已依赖 Serilog.Sinks.Console , Serilog.Sinks.File @@ -36,8 +44,8 @@ public static void Main(string[] args) .Enrich.FromLogContext() // 使用 FromLogContext 方法启用默认的上下文信息 .WriteTo.Console() .WriteTo.File(path: $"logs/{nameof(KnifeHub)}.txt", rollingInterval: RollingInterval.Day - , retainedFileCountLimit: 31 - , retainedFileTimeLimit: TimeSpan.FromDays(31)) + , retainedFileCountLimit: configOptions?.Log?.RetainedFileCountLimit ?? 31 + , retainedFileTimeLimit: TimeSpan.FromDays(configOptions?.Log?.RetainedFileTimeLimitDays ?? 31)) .CreateLogger(); try @@ -51,6 +59,7 @@ public static void Main(string[] args) string buildTime = AppBuildStampUtil.BuildTime; Log.Information($"Git: {gitBranch} {gitHash}"); Log.Information($"Build: {version} {buildTime}"); + Log.Information(DotNetUtil.ToString()); #endregion { @@ -77,7 +86,7 @@ public static void Main(string[] args) builder.Host.UseSerilog(); // 配置注入 - ConfigOptions configOptions = builder.Configuration.GetSection(ConfigOptions.Config).Get(); + //ConfigOptions configOptions = builder.Configuration.GetSection(ConfigOptions.Config).Get(); builder.Services.Configure(builder.Configuration.GetSection(ConfigOptions.Config)); #region Sentry diff --git a/src/KnifeHub.Web/Utils/DotNetUtil.cs b/src/KnifeHub.Web/Utils/DotNetUtil.cs new file mode 100644 index 000000000..ee17ac251 --- /dev/null +++ b/src/KnifeHub.Web/Utils/DotNetUtil.cs @@ -0,0 +1,51 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace KnifeHub.Web.Utils +{ + public class DotNetUtil + { + public static string DotNetVersion + { + get + { + string dotNetVersion = + System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription; + + return dotNetVersion; + } + } + + public static string? AspNetCoreFileVersion + { + get + { + var assembly = typeof(Microsoft.AspNetCore.Http.HttpContext).Assembly; + var fileVersionInfo = System.Diagnostics.FileVersionInfo.GetVersionInfo(assembly.Location); + string? aspNetCoreVersion = fileVersionInfo.FileVersion; + + return aspNetCoreVersion; + } + } + + public static string? AspNetCoreProductVersion + { + get + { + var assembly = typeof(Microsoft.AspNetCore.Http.HttpContext).Assembly; + var fileVersionInfo = System.Diagnostics.FileVersionInfo.GetVersionInfo(assembly.Location); + string? aspNetCoreVersion = fileVersionInfo.ProductVersion; + + return aspNetCoreVersion; + } + } + + public static string ToString() + { + string str = $".NET Version: {DotNetVersion} ASP.NET Core FileVersion: {AspNetCoreFileVersion ?? "null"} ASP.NET Core ProductVersion: {AspNetCoreProductVersion ?? "null"}"; + + return str; + } + } +} diff --git a/src/KnifeHub.Web/appsettings.json b/src/KnifeHub.Web/appsettings.json index 9af20efa4..2b571eb9f 100644 --- a/src/KnifeHub.Web/appsettings.json +++ b/src/KnifeHub.Web/appsettings.json @@ -9,6 +9,10 @@ "AllowedHosts": "*", "KnifeHub": { "AllowAllCors": false, - "CorsWhiteList": [] + "CorsWhiteList": [], + "Log": { + "RetainedFileCountLimit": 31, + "RetainedFileTimeLimitDays": 31 + } } } From 65182b268c8fa920a55f1d412a5bc65d7e1155cd Mon Sep 17 00:00:00 2001 From: yiyun Date: Wed, 13 Mar 2024 05:52:06 +0800 Subject: [PATCH 02/16] =?UTF-8?q?feat(src/knifehub.web/program.cs):=20?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/KnifeHub.Web/Program.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/KnifeHub.Web/Program.cs b/src/KnifeHub.Web/Program.cs index 888dd8b02..833ef6fad 100644 --- a/src/KnifeHub.Web/Program.cs +++ b/src/KnifeHub.Web/Program.cs @@ -66,18 +66,18 @@ public static void Main(string[] args) #region 启动参数 for (var i = 0; i < args.Length; i++) { - System.Console.WriteLine($"args[{i}]: {args[i]}"); + Log.Information($"args[{i}]: {args[i]}"); } if (args.Contains("--no-console")) { - System.Console.WriteLine("--no-console: hidden current console window"); + Log.Information("--no-console: hidden current console window"); // 获取控制台窗口句柄 var handle = GetConsoleWindow(); // 隐藏控制台窗口 ShowWindow(handle, SW_HIDE); } // 输出当前平台信息 - Console.WriteLine($"CurrentPlatform: {Utils.OSUtil.PlatformInfo()}"); + Log.Information($"CurrentPlatform: {Utils.OSUtil.PlatformInfo()}"); #endregion var builder = WebApplication.CreateBuilder(args); @@ -119,12 +119,12 @@ public static void Main(string[] args) #region 跨域配置 if (configOptions.AllowAllCors) { - Console.WriteLine("跨域: AllowAllCors"); + Log.Information("Cors: AllowAllCors"); builder.Services.AddCors(m => m.AddPolicy("AllowAllCors", a => a.AllowAnyOrigin().AllowAnyHeader())); } else { - Console.WriteLine("跨域: AllowedCorsOrigins"); + Log.Information("Cors: AllowedCorsOrigins"); #region CorsWhiteList var corsWhiteList = configOptions.CorsWhiteList; // 所有允许跨域的 Origin @@ -177,12 +177,12 @@ public static void Main(string[] args) if (configOptions.AllowAllCors) { app.UseCors("AllowAllCors"); - Console.WriteLine("AllowAllCors"); + Log.Information("AllowAllCors"); } else { app.UseCors("AllowedCorsOrigins"); - Console.WriteLine("AllowedCorsOrigins"); + Log.Information("AllowedCorsOrigins"); } #endregion From 35b93288d885ac00184fe7b1d20fcb1fe72ef1a3 Mon Sep 17 00:00:00 2001 From: yiyun Date: Wed, 13 Mar 2024 06:51:55 +0800 Subject: [PATCH 03/16] ci(.github/workflows/knifehub-release.yml): add dotnet 8.0.201, build 7, 8 --- .github/workflows/KnifeHub-release.yml | 80 +++++++++++++++++++++----- 1 file changed, 66 insertions(+), 14 deletions(-) diff --git a/.github/workflows/KnifeHub-release.yml b/.github/workflows/KnifeHub-release.yml index 0a049ae02..d7aa2fb93 100644 --- a/.github/workflows/KnifeHub-release.yml +++ b/.github/workflows/KnifeHub-release.yml @@ -47,34 +47,70 @@ jobs: dotnet-version: | 6.0.100 7.0.401 + 8.0.201 - name: Build run: | cd ./src/KnifeHub.Web # win-x64 - dotnet publish --framework net6.0 --configuration Release --runtime win-x64 -p:PublishSingleFile=true --output ../../win-x64 --self-contained true + dotnet publish --framework net6.0 --configuration Release --runtime win-x64 -p:PublishSingleFile=true --output ../../net6.0-win-x64 --self-contained true + dotnet publish --framework net7.0 --configuration Release --runtime win-x64 -p:PublishSingleFile=true --output ../../net7.0-win-x64 --self-contained true + dotnet publish --framework net8.0 --configuration Release --runtime win-x64 -p:PublishSingleFile=true --output ../../net8.0-win-x64 --self-contained true # win-x86 - dotnet publish --framework net6.0 --configuration Release --runtime win-x86 -p:PublishSingleFile=true --output ../../win-x86 --self-contained true + dotnet publish --framework net6.0 --configuration Release --runtime win-x86 -p:PublishSingleFile=true --output ../../net6.0-win-x86 --self-contained true + dotnet publish --framework net7.0 --configuration Release --runtime win-x86 -p:PublishSingleFile=true --output ../../net7.0-win-x86 --self-contained true + dotnet publish --framework net8.0 --configuration Release --runtime win-x86 -p:PublishSingleFile=true --output ../../net8.0-win-x86 --self-contained true # linux-x64 - dotnet publish --framework net6.0 --configuration Release --runtime linux-x64 -p:PublishSingleFile=true --output ../../linux-x64 --self-contained true + dotnet publish --framework net6.0 --configuration Release --runtime linux-x64 -p:PublishSingleFile=true --output ../../net6.0-linux-x64 --self-contained true + dotnet publish --framework net7.0 --configuration Release --runtime linux-x64 -p:PublishSingleFile=true --output ../../net7.0-linux-x64 --self-contained true + dotnet publish --framework net8.0 --configuration Release --runtime linux-x64 -p:PublishSingleFile=true --output ../../net8.0-linux-x64 --self-contained true # linux-arm - dotnet publish --framework net6.0 --configuration Release --runtime linux-arm -p:PublishSingleFile=true --output ../../linux-arm --self-contained true + dotnet publish --framework net6.0 --configuration Release --runtime linux-arm -p:PublishSingleFile=true --output ../../net6.0-linux-arm --self-contained true + dotnet publish --framework net7.0 --configuration Release --runtime linux-arm -p:PublishSingleFile=true --output ../../net7.0-linux-arm --self-contained true + dotnet publish --framework net8.0 --configuration Release --runtime linux-arm -p:PublishSingleFile=true --output ../../net8.0-linux-arm --self-contained true # linux-arm64 - dotnet publish --framework net6.0 --configuration Release --runtime linux-arm64 -p:PublishSingleFile=true --output ../../linux-arm64 --self-contained true + dotnet publish --framework net6.0 --configuration Release --runtime linux-arm64 -p:PublishSingleFile=true --output ../../net6.0-linux-arm64 --self-contained true + dotnet publish --framework net7.0 --configuration Release --runtime linux-arm64 -p:PublishSingleFile=true --output ../../net7.0-linux-arm64 --self-contained true + dotnet publish --framework net8.0 --configuration Release --runtime linux-arm64 -p:PublishSingleFile=true --output ../../net8.0-linux-arm64 --self-contained true # osx-x64 - dotnet publish --framework net6.0 --configuration Release --runtime osx-x64 -p:PublishSingleFile=true --output ../../osx-x64 --self-contained true + dotnet publish --framework net6.0 --configuration Release --runtime osx-x64 -p:PublishSingleFile=true --output ../../net6.0-osx-x64 --self-contained true + dotnet publish --framework net7.0 --configuration Release --runtime osx-x64 -p:PublishSingleFile=true --output ../../net7.0-osx-x64 --self-contained true + dotnet publish --framework net8.0 --configuration Release --runtime osx-x64 -p:PublishSingleFile=true --output ../../net8.0-osx-x64 --self-contained true # osx.10.10-x64 - dotnet publish --framework net6.0 --configuration Release --runtime osx.10.10-x64 -p:PublishSingleFile=true --output ../../osx.10.10-x64 --self-contained true + dotnet publish --framework net6.0 --configuration Release --runtime osx.10.10-x64 -p:PublishSingleFile=true --output ../../net6.0-osx.10.10-x64 --self-contained true + dotnet publish --framework net7.0 --configuration Release --runtime osx.10.10-x64 -p:PublishSingleFile=true --output ../../net7.0-osx.10.10-x64 --self-contained true + dotnet publish --framework net8.0 --configuration Release --runtime osx.10.10-x64 -p:PublishSingleFile=true --output ../../net8.0-osx.10.10-x64 --self-contained true - name: Zip the Build run: | - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-win-x64.zip ./win-x64/ - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-win-x86.zip ./win-x86/ - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-x64.zip ./linux-x64/ - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-arm.zip ./linux-arm/ - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-arm64.zip ./linux-arm64/ - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-osx-x64.zip ./osx-x64/ - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-osx.10.10-x64.zip ./osx.10.10-x64/ + # win-x64 + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-win-x64.zip ./net6.0-win-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-win-x64.zip ./net7.0-win-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-win-x64.zip ./net8.0-win-x64/ + # win-x86 + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-win-x86.zip ./net6.0-win-x86/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-win-x86.zip ./net7.0-win-x86/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-win-x86.zip ./net8.0-win-x86/ + # linux-x64 + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-x64.zip ./net6.0-linux-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-linux-x64.zip ./net7.0-linux-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-linux-x64.zip ./net8.0-linux-x64/ + # linux-arm + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-arm.zip ./net6.0-linux-arm/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-linux-arm.zip ./net7.0-linux-arm/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-linux-arm.zip ./net8.0-linux-arm/ + # linux-arm64 + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-arm64.zip ./net6.0-linux-arm64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-linux-arm64.zip ./net7.0-linux-arm64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-linux-arm64.zip ./net8.0-linux-arm64/ + # osx-x64 + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-osx-x64.zip ./net6.0-osx-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-osx-x64.zip ./net7.0-osx-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-osx-x64.zip ./net8.0-osx-x64/ + # osx.10.10-x64 + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-osx.10.10-x64.zip ./net6.0-osx.10.10-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-osx.10.10-x64.zip ./net7.0-osx.10.10-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-osx.10.10-x64.zip ./net8.0-osx.10.10-x64/ - name: Create temp-release-note.md run: | @@ -102,3 +138,19 @@ jobs: KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-arm64.zip KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-osx-x64.zip KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-osx.10.10-x64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-win-x64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-win-x86.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-linux-x64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-linux-arm.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-linux-arm64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-osx-x64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-osx.10.10-x64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-win-x64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-win-x86.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-linux-x64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-linux-arm.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-linux-arm64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-osx-x64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-osx.10.10-x64.zip + README.md + LICENSE From 69ccf859f8e3868aa532c698f7212e06758efd82 Mon Sep 17 00:00:00 2001 From: yiyun Date: Wed, 13 Mar 2024 06:56:07 +0800 Subject: [PATCH 04/16] docs(src/knifehub.web): csproj,html: 1.6.1 --- src/KnifeHub.Web/KnifeHub.Web.csproj | 6 +++--- src/KnifeHub.Web/wwwroot/index.html | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/KnifeHub.Web/KnifeHub.Web.csproj b/src/KnifeHub.Web/KnifeHub.Web.csproj index dfa938939..baaa5dd24 100644 --- a/src/KnifeHub.Web/KnifeHub.Web.csproj +++ b/src/KnifeHub.Web/KnifeHub.Web.csproj @@ -13,9 +13,9 @@ - 1.6.0 - 1.6.0.0 - 1.6.0.0 + 1.6.1 + 1.6.1.0 + 1.6.1.0 diff --git a/src/KnifeHub.Web/wwwroot/index.html b/src/KnifeHub.Web/wwwroot/index.html index db5b3e643..07b60b1f9 100644 --- a/src/KnifeHub.Web/wwwroot/index.html +++ b/src/KnifeHub.Web/wwwroot/index.html @@ -2,7 +2,7 @@ - KnifeHub-v1.6.0 + KnifeHub-v1.6.1