Skip to content

Commit

Permalink
Merge branch 'main' of github.com:yiyungent/KnifeHub
Browse files Browse the repository at this point in the history
  • Loading branch information
yiyungent committed Mar 26, 2024
2 parents 5ef8394 + c52bac2 commit 3717584
Show file tree
Hide file tree
Showing 14 changed files with 203 additions and 50 deletions.
89 changes: 74 additions & 15 deletions .github/workflows/KnifeHub-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,37 +44,77 @@ jobs:
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
# TODO: 发现虽安装多个版本, 但 dotnet cli 依然会使用最新版本,
# 用 --framework net6.0 指定, 但最终执行仍然会由 dotnet\sdk\8.0.201 执行
# 可能只能多个环境容器(不同版本)执行了, 在 GitHub Actions 中可利用 Matrix 多环境
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
# error NETSDK1083: The specified RuntimeIdentifier 'osx.10.10-x64' is not recognized. See https://aka.ms/netsdk1083
# 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: |
Expand All @@ -95,10 +135,29 @@ jobs:
draft: false
prerelease: false
files: |
# net6.0
KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-win-x64.zip
KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-win-x86.zip
KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-x64.zip
KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-arm.zip
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 }}-net6.0-osx.10.10-x64.zip
# net7.0
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
# net8.0
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
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,6 @@ src/KnifeHub.Web/Plugins_wwwroot/




*/watchlogs*.db


2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,7 @@ mkdir -p docker-data/App_Data/
mkdir -p docker-data/Plugins/
mkdir -p docker-data/Plugins_wwwroot/
# 保存当前数据
docker cp knifehub:/app/appsettings.json docker-data/appsettings.json
docker cp knifehub:/app/App_Data/PluginCore.Config.json docker-data/App_Data/PluginCore.Config.json
docker cp knifehub:/app/App_Data/plugin.config.json docker-data/App_Data/plugin.config.json
docker cp knifehub:/app/Plugins/ docker-data/
Expand All @@ -266,6 +267,7 @@ docker run -d --restart=always -p 53213:80 -e ASPNETCORE_URLS="http://*:80" -e A
# 这里我将原本备份的数据保存到了这个路径, 进入这个路径, 将备份数据覆盖到 docker 容器中
cd docker-data

docker cp appsettings.json knifehub:/app/appsettings.json
docker cp App_Data/PluginCore.Config.json knifehub:/app/App_Data/PluginCore.Config.json
docker cp App_Data/plugin.config.json knifehub:/app/App_Data/plugin.config.json
docker cp Plugins/ knifehub:/app/
Expand Down
20 changes: 17 additions & 3 deletions src/KnifeHub.Web/Config/ConfigOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<string> CorsWhiteList { get; set; }

public LogModel Log { get; set; }

public class LogModel
{
public int RetainedFileCountLimit { get; set; } = 31;

public int RetainedFileTimeLimitDays { get; set; } = 31;
}
}
}
}
6 changes: 5 additions & 1 deletion src/KnifeHub.Web/Controllers/HomeController.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using PluginCore.Interfaces;
using PluginCore.IPlugins;
Expand All @@ -11,6 +11,10 @@ namespace KnifeHub.Web.Controllers
[ApiController]
public class HomeController : ControllerBase
{
/// <summary>
/// 首页
/// </summary>
/// <returns></returns>
[Route("")]
[HttpGet]
public async Task<ActionResult> Index()
Expand Down
8 changes: 4 additions & 4 deletions src/KnifeHub.Web/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["src/KnifeHub.Web/KnifeHub.Web.csproj", "src/KnifeHub.Web/"]
COPY ["src/KnifeHub.Sdk/KnifeHub.Sdk.csproj", "src/KnifeHub.Sdk/"]
RUN dotnet restore "src/KnifeHub.Web/KnifeHub.Web.csproj"
COPY . .
WORKDIR "/src/src/KnifeHub.Web"
RUN dotnet build "KnifeHub.Web.csproj" -c Release -o /app/build
RUN dotnet build --framework net8.0 "KnifeHub.Web.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish --framework net6.0 "KnifeHub.Web.csproj" -c Release -o /app/publish
RUN dotnet publish --framework net8.0 "KnifeHub.Web.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
Expand Down
8 changes: 4 additions & 4 deletions src/KnifeHub.Web/Dockerfile.amd-chrome
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80

Expand Down Expand Up @@ -40,17 +40,17 @@ RUN apt-get install libnss3-dev -y
RUN apt-get install libxcb1 -y
# end Selenium

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["src/KnifeHub.Web/KnifeHub.Web.csproj", "src/KnifeHub.Web/"]
COPY ["src/KnifeHub.Sdk/KnifeHub.Sdk.csproj", "src/KnifeHub.Sdk/"]
RUN dotnet restore "src/KnifeHub.Web/KnifeHub.Web.csproj"
COPY . .
WORKDIR "/src/src/KnifeHub.Web"
RUN dotnet build "KnifeHub.Web.csproj" -c Release -o /app/build
RUN dotnet build --framework net8.0 "KnifeHub.Web.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish --framework net6.0 "KnifeHub.Web.csproj" -c Release -o /app/publish
RUN dotnet publish --framework net8.0 "KnifeHub.Web.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
Expand Down
8 changes: 4 additions & 4 deletions src/KnifeHub.Web/Dockerfile.amd-full
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80

Expand Down Expand Up @@ -40,17 +40,17 @@ RUN apt-get install libnss3-dev -y
RUN apt-get install libxcb1 -y
# end Selenium

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["src/KnifeHub.Web/KnifeHub.Web.csproj", "src/KnifeHub.Web/"]
COPY ["src/KnifeHub.Sdk/KnifeHub.Sdk.csproj", "src/KnifeHub.Sdk/"]
RUN dotnet restore "src/KnifeHub.Web/KnifeHub.Web.csproj"
COPY . .
WORKDIR "/src/src/KnifeHub.Web"
RUN dotnet build "KnifeHub.Web.csproj" -c Release -o /app/build
RUN dotnet build --framework net8.0 "KnifeHub.Web.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish --framework net6.0 "KnifeHub.Web.csproj" -c Release -o /app/publish
RUN dotnet publish --framework net8.0 "KnifeHub.Web.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
Expand Down
20 changes: 15 additions & 5 deletions src/KnifeHub.Web/KnifeHub.Web.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFrameworks>net6.0</TargetFrameworks>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<!-- 注意: 当 OpenApiGenerateDocuments 为 true 时, dotnet build 会尝试临时启动 Program, 未知原因 -->
<!-- 于是启动过程 PluginCore 尝试启用插件, 而 dotnet build 不指定 framework 则会尝试多个目标框架 -->
<!-- 于是插件 framework 与当前启动的 framework 不符, 则导致 Error 失败, 发现此时并不会框架向下兼容 -->
<!-- 因此, 需要本地调试时, 注释多目标框架, 启用下方单目标 -->
<!--<TargetFrameworks>net8.0</TargetFrameworks>-->
<OpenApiGenerateDocuments>false</OpenApiGenerateDocuments>
<OpenApiGenerateDocumentsOnBuild>false</OpenApiGenerateDocumentsOnBuild>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
Expand All @@ -12,12 +18,16 @@
</PropertyGroup>

<PropertyGroup>
<Version>1.6.0</Version>
<FileVersion>1.6.0.0</FileVersion>
<AssemblyVersion>1.6.0.0</AssemblyVersion>
<Version>1.6.2</Version>
<FileVersion>1.6.2.0</FileVersion>
<AssemblyVersion>1.6.2.0</AssemblyVersion>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.ApiDescription.Server" Version="6.0.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.14.0" />
<PackageReference Include="Sentry.AspNetCore" Version="3.26.2" />
<PackageReference Include="Serilog.AspNetCore" Version="8.0.0" />
Expand All @@ -26,7 +36,7 @@

<!-- 方便开发debug,与发布到nuget -->
<ItemGroup Condition="'$(Configuration)' == 'Release'">
<PackageReference Include="PluginCore.AspNetCore" Version="1.4.0" />
<PackageReference Include="PluginCore.AspNetCore" Version="1.4.1" />
</ItemGroup>
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
<ProjectReference Include="..\PluginCore\src\PluginCore.AspNetCore\PluginCore.AspNetCore.csproj" />
Expand Down
Loading

0 comments on commit 3717584

Please sign in to comment.