feat: update to .net 10. (#20)
All checks were successful
Build blog docker image / Build-Blog-Image (push) Successful in 3m41s
All checks were successful
Build blog docker image / Build-Blog-Image (push) Successful in 3m41s
Use ClientAssets to build tailwind styles. Make blog anchors not open new tab. Reviewed-on: #20
This commit is contained in:
@@ -18,7 +18,7 @@ jobs:
|
|||||||
- name: Build docker image.
|
- name: Build docker image.
|
||||||
run: |
|
run: |
|
||||||
proxy
|
proxy
|
||||||
podman pull mcr.microsoft.com/dotnet/aspnet:9.0
|
podman pull mcr.microsoft.com/dotnet/aspnet:10.0
|
||||||
unproxy
|
unproxy
|
||||||
cd YaeBlog
|
cd YaeBlog
|
||||||
podman build . -t ccr.ccs.tencentyun.com/jackfiled/blog --build-arg COMMIT_ID=$(git rev-parse --short=10 HEAD)
|
podman build . -t ccr.ccs.tencentyun.com/jackfiled/blog --build-arg COMMIT_ID=$(git rev-parse --short=10 HEAD)
|
||||||
|
|||||||
@@ -5,16 +5,33 @@
|
|||||||
<meta charset="utf-8"/>
|
<meta charset="utf-8"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
<base href="/"/>
|
<base href="/"/>
|
||||||
<link rel="stylesheet" href="YaeBlog.styles.css"/>
|
<link rel="stylesheet" href="@Assets["YaeBlog.styles.css"]"/>
|
||||||
<link rel="icon" href="images/favicon.ico"/>
|
<link rel="icon" href="@Assets["images/favicon.ico"]"/>
|
||||||
<link rel="stylesheet" href="globals.css"/>
|
<link rel="stylesheet" href="@Assets["tailwind.g.css"]"/>
|
||||||
<link rel="stylesheet" href="tailwind.g.css"/>
|
<style>
|
||||||
|
@@font-face {
|
||||||
|
font-family: "Font Awesome 6 Free";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: block;
|
||||||
|
src: url(@Assets["fonts/fa-regular-400.woff2"]) format("woff2") url(@Assets["fonts/fa-regular-400.ttf"]) format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@@font-face {
|
||||||
|
font-family: "Font Awesome 6 Free";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 900;
|
||||||
|
font-display: block;
|
||||||
|
src: url(@Assets["fonts/fa-solid-900.woff2"]) format("woff2"), url(@Assets["fonts/fa-solid-900.ttf"]) format("truetype")
|
||||||
|
}
|
||||||
|
</style>
|
||||||
<HeadOutlet/>
|
<HeadOutlet/>
|
||||||
|
<ImportMap/>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<Routes/>
|
<Routes/>
|
||||||
<script src="_framework/blazor.web.js"></script>
|
<script src="@Assets["_framework/blazor.web.js"]"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<div class="flex flex-col p-3">
|
<div class="flex flex-col p-3">
|
||||||
<div class="text-3xl font-bold py-2">
|
<div class="text-3xl font-bold py-2">
|
||||||
<a href="/blog/essays/@(Essay.FileName)" target="_blank">@(Essay.Title)</a>
|
<a href="/blog/essays/@(Essay.FileName)">@(Essay.Title)</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="p-2 flex flex-row justify-content-start gap-2">
|
<div class="p-2 flex flex-row justify-content-start gap-2">
|
||||||
@@ -14,9 +14,7 @@
|
|||||||
@foreach (string key in Essay.Tags)
|
@foreach (string key in Essay.Tags)
|
||||||
{
|
{
|
||||||
<div class="text-sky-600">
|
<div class="text-sky-600">
|
||||||
<a href="/blog/tags/?tagName=@(UrlEncoder.Default.Encode(key))">
|
<Anchor Address="@($"/blog/tags/?tagName={UrlEncoder.Default.Encode(key)}")" Text="@($"# {key}")"/>
|
||||||
# @key
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
28
YaeBlog/Components/Layout/BlogLayout.razor
Normal file
28
YaeBlog/Components/Layout/BlogLayout.razor
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
@inherits LayoutComponentBase
|
||||||
|
|
||||||
|
@attribute [StreamRendering]
|
||||||
|
|
||||||
|
<main class="container mx-auto flex flex-col min-h-screen">
|
||||||
|
<div class="grid grid-cols-3 mx-3">
|
||||||
|
<div class="md:col-span-2 col-span-3 h-20 flex items-center">
|
||||||
|
<a href="/blog/">
|
||||||
|
<span class="text-blue-600 text-2xl">Ricardo's Blog</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="md:col-span-1 col-span-3 h-20 flex items-center">
|
||||||
|
<div class="flex flex-row w-full px-2 md:justify-center justify-end text-xl gap-3">
|
||||||
|
<Anchor Address="/blog/archives" Text="归档"/>
|
||||||
|
<Anchor Address="/blog/tags/" Text="标签"/>
|
||||||
|
<Anchor Address="/about/" Text="关于" NewPage="@(true)"/>
|
||||||
|
<Anchor Address="/friends" Text="友链" NewPage="@(true)"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="px-4 py-2 flex-grow">
|
||||||
|
@Body
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Foonter/>
|
||||||
|
</main>
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
<div class="mx-20">
|
<div class="mx-20">
|
||||||
<div class="grid grid-cols-3 py-4">
|
<div class="grid grid-cols-3 py-4">
|
||||||
<div class="col-span-3 md:col-span-1 p-5 p-lg-0">
|
<div class="col-span-3 md:col-span-1 p-5 p-lg-0">
|
||||||
<img src="images/avatar.png" alt="Ricardo's Avatar" class="h-auto max-w-full">
|
<img src="@Assets["images/avatar.png"]" alt="Ricardo's Avatar" class="h-auto max-w-full">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-span-3 md:col-span-2">
|
<div class="col-span-3 md:col-span-2">
|
||||||
@@ -6,5 +6,4 @@
|
|||||||
@using static Microsoft.AspNetCore.Components.Web.RenderMode
|
@using static Microsoft.AspNetCore.Components.Web.RenderMode
|
||||||
@using Microsoft.AspNetCore.Components.Web.Virtualization
|
@using Microsoft.AspNetCore.Components.Web.Virtualization
|
||||||
@using Microsoft.JSInterop
|
@using Microsoft.JSInterop
|
||||||
@using YaeBlog
|
|
||||||
@using YaeBlog.Components
|
@using YaeBlog.Components
|
||||||
53
YaeBlog/Directory.Build.targets
Normal file
53
YaeBlog/Directory.Build.targets
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<ClientAssetsRestoreCommand Condition="'$(ClientAssesRestoreCommand)' == ''">pnpm install</ClientAssetsRestoreCommand>
|
||||||
|
<ClientAssetsBuildCommand Condition="'$(ClientAssetsBuildCommand)' == ''">pnpm run build</ClientAssetsBuildCommand>
|
||||||
|
<ClientAssetsBuildOutputParameter Condition="'$(ClientAssetsBuildOutputParameter)' == ''">--output</ClientAssetsBuildOutputParameter>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<_RestoreClientAssetsBeforeTargets Condition="'$(TargetFramework)' == ''">DispatchToInnerBuilds</_RestoreClientAssetsBeforeTargets>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<Target Name="RestoreClientAssets" BeforeTargets="$(_RestoreClientAssetsBeforeTargets)">
|
||||||
|
<Message Importance="high" Text="Running $(ClientAssetsRestoreCommand)"/>
|
||||||
|
<Exec Command="$(ClientAssetsRestoreCommand)"/>
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="BuildClientAssets" DependsOnTargets="RestoreClientAssets" BeforeTargets="AssignTargetPaths">
|
||||||
|
<PropertyGroup>
|
||||||
|
<_ClientAssetsOutputFullPath>$([System.IO.Path]::GetFullPath('$(IntermediateOutputPath)ClientAssets'))</_ClientAssetsOutputFullPath>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<MakeDir Directories="$(_ClientAssetsOutputFullPath)"/>
|
||||||
|
<Exec Command="$(ClientAssetsBuildCommand) $(ClientAssetsBuildOutputParameter) $(_ClientAssetsOutputFullPath)"/>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<_ClientAssetsBuildOutput Include="$(IntermediateOutputPath)ClientAssets\**"/>
|
||||||
|
</ItemGroup>
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="DefineClientAssets" AfterTargets="BuildClientAssets" DependsOnTargets="ResolveStaticWebAssetsConfiguration">
|
||||||
|
<ItemGroup>
|
||||||
|
<FileWrites Include="@(_ClientAssetsBuildOutput)"/>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<DefineStaticWebAssets
|
||||||
|
CandidateAssets="@(_ClientAssetsBuildOutput)"
|
||||||
|
SourceId="$(PackageId)"
|
||||||
|
SourceType="Computed"
|
||||||
|
ContentRoot="$(_ClientAssetsOutputFullPath)"
|
||||||
|
BasePath="$(StaticWebAssetBasePath)"
|
||||||
|
>
|
||||||
|
<Output TaskParameter="Assets" ItemName="StaticWebAsset"/>
|
||||||
|
<Output TaskParameter="Assets" ItemName="_ClientAssetsStaticWebAsset"/>
|
||||||
|
</DefineStaticWebAssets>
|
||||||
|
|
||||||
|
<DefineStaticWebAssetEndpoints
|
||||||
|
CandidateAssets="@(_ClientAssetsStaticWebAsset)"
|
||||||
|
ContentTypeMappings="@(StaticWebAssetContentTypeMapping)"
|
||||||
|
>
|
||||||
|
<Output TaskParameter="Endpoints" ItemName="StaticWebAssetEndpoint" />
|
||||||
|
</DefineStaticWebAssetEndpoints>
|
||||||
|
</Target>
|
||||||
|
</Project>
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
FROM mcr.microsoft.com/dotnet/aspnet:9.0
|
FROM mcr.microsoft.com/dotnet/aspnet:10.0
|
||||||
|
|
||||||
ARG COMMIT_ID
|
ARG COMMIT_ID
|
||||||
ENV COMMIT_ID=${COMMIT_ID}
|
ENV COMMIT_ID=${COMMIT_ID}
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY bin/Release/net9.0/publish/ ./
|
COPY bin/Release/net10.0/publish/ ./
|
||||||
COPY source/ ./source/
|
COPY source/ ./source/
|
||||||
COPY appsettings.json .
|
COPY appsettings.json .
|
||||||
|
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
@inherits LayoutComponentBase
|
|
||||||
|
|
||||||
@attribute [StreamRendering]
|
|
||||||
|
|
||||||
<main class="container mx-auto flex flex-col min-h-screen">
|
|
||||||
<div class="grid grid-cols-3 mx-3">
|
|
||||||
<div class="md:col-span-2 col-span-3 h-20 flex items-center">
|
|
||||||
<a href="/blog/">
|
|
||||||
<span class="text-blue-600 text-2xl">Ricardo's Blog</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="md:col-span-1 col-span-3 h-20 flex items-center">
|
|
||||||
<div class="flex flex-row w-full px-2 gap-3 md:justify-center justify-end">
|
|
||||||
<div>
|
|
||||||
<a href="/blog/archives/">
|
|
||||||
<span class="text-xl text-blue-600">归档</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a href="/blog/tags/">
|
|
||||||
<span class="text-xl text-blue-600">标签</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a href="/about/" target="_blank">
|
|
||||||
<span class="text-xl text-blue-600">关于</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a href="/friends/" target="_blank">
|
|
||||||
<span class="text-xl text-blue-600">友链</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="px-4 py-2 flex-grow">
|
|
||||||
@Body
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<Foonter/>
|
|
||||||
</main>
|
|
||||||
@@ -11,30 +11,13 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net9.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<Target Name="EnsurePnpmInstalled" BeforeTargets="BeforeBuild">
|
<PropertyGroup>
|
||||||
<Message Importance="low" Text="Ensure pnpm is installed..."/>
|
<ClientAssetsRestoreCommand>pnpm install</ClientAssetsRestoreCommand>
|
||||||
<Exec Command="pnpm --version" ContinueOnError="true">
|
<ClientAssetsBuildCommand>pwsh build-tailwind.ps1</ClientAssetsBuildCommand>
|
||||||
<Output TaskParameter="ExitCode" PropertyName="ErrorCode"/>
|
</PropertyGroup>
|
||||||
</Exec>
|
|
||||||
|
|
||||||
<Error Condition="$(ErrorCode) != 0" Text="Pnpm is not installed which is required for build."/>
|
|
||||||
|
|
||||||
<Message Importance="normal" Text="Installing pakages using pnpm..."/>
|
|
||||||
<Exec Command="pnpm install"/>
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<Target Name="TailwindGenerate" AfterTargets="EnsurePnpmInstalled" BeforeTargets="BeforeBuild" Condition="'$(_IsPublishing)' == 'yes'">
|
|
||||||
<Message Importance="normal" Text="Generate css files using tailwind..."/>
|
|
||||||
<Exec Command="pnpm tailwindcss -i wwwroot/tailwind.css -o $(IntermediateOutputPath)tailwind.g.css"/>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Content Include="$(IntermediateOutputPath)tailwind.g.css" Visible="false" TargetPath="wwwroot/tailwind.g.css"/>
|
|
||||||
</ItemGroup>
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
"Name": "万木长风",
|
"Name": "万木长风",
|
||||||
"Description": "世界渲染中...",
|
"Description": "世界渲染中...",
|
||||||
"Link": "https://ryohai.fun",
|
"Link": "https://ryohai.fun",
|
||||||
"AvatarImage": "https://ryohai.fun/icon.jpg"
|
"AvatarImage": "https://ryohai.fun/static/favicons/favicon-32x32.png"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
7
YaeBlog/build-tailwind.ps1
Normal file
7
YaeBlog/build-tailwind.ps1
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[cmdletbinding()]
|
||||||
|
param(
|
||||||
|
[string]$output = "wwwroot"
|
||||||
|
)
|
||||||
|
|
||||||
|
Write-Output "Output directory: $output"
|
||||||
|
pnpm tailwindcss -i wwwroot/tailwind.css -o $output/tailwind.g.css
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
@font-face {
|
|
||||||
font-family: "Font Awesome 6 Free";
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 400;
|
|
||||||
font-display: block;
|
|
||||||
src: url(fonts/fa-regular-400.woff2) format("woff2"), url(fonts/fa-regular-400.ttf) format("truetype")
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "Font Awesome 6 Free";
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 900;
|
|
||||||
font-display: block;
|
|
||||||
src: url(fonts/fa-solid-900.woff2) format("woff2"), url(fonts/fa-solid-900.ttf) format("truetype")
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user