This commit is contained in:
2026-01-18 14:43:20 +08:00
parent 477f6829d9
commit d0d3689eea
4 changed files with 55 additions and 9 deletions

View File

@@ -8,6 +8,8 @@ on:
env: env:
EDGEONE_PROJECT_NAME: cloud-blog EDGEONE_PROJECT_NAME: cloud-blog
GIT_DATE: ${{ github.event.head_commit.timestamp || github.event.pusher.date }}
GIT_SHA: ${{ github.event.head_commit.id || github.sha }}
jobs: jobs:
build: build:

View File

@@ -2,7 +2,7 @@
<!-- eslint-disable vue/no-v-text-v-html-on-component --> <!-- eslint-disable vue/no-v-text-v-html-on-component -->
<template> <template>
<footer <footer
class="text-center mt-auto w-full flex flex-col gap-2 py-8 px-4 border-t border-white/10 dark:border-white/5"> class="text-center mt-auto w-full flex flex-col gap-2 py-4 px-4 border-t border-white/10 dark:border-white/5">
<!-- 一言 --> <!-- 一言 -->
<p v-if="showHitokoto && quote" class="text-text-muted text-sm m-0 italic"> <p v-if="showHitokoto && quote" class="text-text-muted text-sm m-0 italic">
{{ quote }}<span v-if="from" class="ml-1.5"> {{ from }}</span> {{ quote }}<span v-if="from" class="ml-1.5"> {{ from }}</span>
@@ -71,6 +71,12 @@
<!-- eslint-disable-next-line vue/no-v-html --> <!-- eslint-disable-next-line vue/no-v-html -->
<div v-if="contact?.customHtml" v-html="contact.customHtml"></div> <div v-if="contact?.customHtml" v-html="contact.customHtml"></div>
<!-- Git build info -->
<p v-if="build?.short" class="text-text-muted text-xs m-0">
构建自提交<span :title="build.sha">{{ build.short }}</span>
<span v-if="build.date">· {{ build.date }}</span>
</p>
</footer> </footer>
</template> </template>
@@ -128,6 +134,10 @@ const isExternal = (url) => {
return typeof url === "string" && /^https?:\/\//.test(url); return typeof url === "string" && /^https?:\/\//.test(url);
}; };
// runtime build info injected from nuxt.config at build time
const runtimeConfig = useRuntimeConfig();
const build = runtimeConfig.public?.build || null;
onMounted(() => { onMounted(() => {
if (showHitokoto) fetchHitokoto(); if (showHitokoto) fetchHitokoto();
}); });

View File

@@ -92,7 +92,7 @@ const siteConfig: SiteConfig = {
}, },
ad: { ad: {
enable: true, enable: false,
ads: [ ads: [
{ {
body: '<p><span class="inline-flex items-center gap-2">本网站由 <img src="/ads/upyun.png" class="h-7 w-auto" alt="Upyun" /> 提供云存储服务</span></p>', body: '<p><span class="inline-flex items-center gap-2">本网站由 <img src="/ads/upyun.png" class="h-7 w-auto" alt="Upyun" /> 提供云存储服务</span></p>',

View File

@@ -1,5 +1,41 @@
import siteConfig from "./app/config"; import siteConfig from "./app/config";
import tailwindcss from "@tailwindcss/vite"; import tailwindcss from "@tailwindcss/vite";
import { execSync } from "child_process";
// Compute git build info at build time. If git isn't available (e.g. in
// certain CI environments), fields will be empty strings.
const runGit = (cmd: string) => {
try {
return execSync(cmd, { encoding: "utf8" }).trim();
} catch (e) {
console.error(e);
return "";
}
};
const gitSha = runGit("git rev-parse HEAD");
const gitShort = runGit("git rev-parse --short HEAD");
const gitMessage = runGit("git log -1 --pretty=%B");
const gitDate = runGit("git show -s --format=%ci HEAD");
// Prefer build info from environment variables (set by GitHub Actions
// or custom CI). Supported vars (in priority order):
// - BUILD_SHA, GITHUB_SHA
// - BUILD_SHORT, (derived from SHA if missing)
// - BUILD_MESSAGE
// - BUILD_DATE
// Falls back to git-derived values when env vars are not present.
const envSha = process.env.BUILD_SHA || process.env.GITHUB_SHA || "";
const envShort = process.env.BUILD_SHORT || (envSha ? envSha.slice(0, 7) : "") || gitShort || "";
const envMessage = process.env.BUILD_MESSAGE || "";
const envDate = process.env.BUILD_DATE || "";
const gitBuild = {
sha: envSha || gitSha,
short: envShort || gitShort,
message: envMessage || gitMessage,
date: envDate || gitDate,
};
export default defineNuxtConfig({ export default defineNuxtConfig({
compatibilityDate: "2025-12-20", compatibilityDate: "2025-12-20",
@@ -59,8 +95,8 @@ export default defineNuxtConfig({
{ rel: "stylesheet", href: "/fonts/521/main/result.css" }, { rel: "stylesheet", href: "/fonts/521/main/result.css" },
], ],
}, },
pageTransition: { name: "page", mode: "out-in" }, pageTransition: { name: "page", mode: "in-out" },
layoutTransition: { name: "layout", mode: "out-in" }, layoutTransition: { name: "layout", mode: "in-out" },
}, },
robots: { groups: [{ userAgent: ["GPTBot", "ChatGPT-User"], disallow: ["/"] }] }, robots: { groups: [{ userAgent: ["GPTBot", "ChatGPT-User"], disallow: ["/"] }] },
@@ -94,11 +130,9 @@ export default defineNuxtConfig({
}, },
runtimeConfig: { runtimeConfig: {
public: {}, public: {
// Private server-only settings build: gitBuild,
databaseUrl: process.env.DATABASE_URL || "", },
jwtSecret: process.env.JWT_SECRET || "",
// legacy supabase service role no longer used
}, },
postcss: { postcss: {