diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml index c56dbfb..002ed19 100644 --- a/.github/workflows/docker-ci.yml +++ b/.github/workflows/docker-ci.yml @@ -21,6 +21,7 @@ jobs: NEXT_PUBLIC_SUPABASE_ANON_KEY=${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }} NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY=${{ secrets.NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY }} NEXT_PUBLIC_GA_ID=${{ secrets.NEXT_PUBLIC_GA_ID }} + NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL=${{ secrets.NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL }} EOF - name: Build Dockerfile image @@ -55,6 +56,7 @@ jobs: NEXT_PUBLIC_SUPABASE_ANON_KEY=${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }} NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY=${{ secrets.NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY }} NEXT_PUBLIC_GA_ID=${{ secrets.NEXT_PUBLIC_GA_ID }} + NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL=${{ secrets.NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL }} EOF - name: Docker Compose up diff --git a/.github/workflows/nextjs.yml b/.github/workflows/nextjs.yml index 270dd2d..23d09c4 100644 --- a/.github/workflows/nextjs.yml +++ b/.github/workflows/nextjs.yml @@ -78,6 +78,7 @@ jobs: NEXT_PUBLIC_SUPABASE_ANON_KEY=${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }} NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY=${{ secrets.NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY }} NEXT_PUBLIC_GA_ID=${{ secrets.NEXT_PUBLIC_GA_ID }} + NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL=${{ secrets.NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL }} EOF - name: Install dependencies run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} diff --git a/Dockerfile b/Dockerfile index 9fa5aa6..d895e00 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,10 +5,12 @@ ARG NEXT_PUBLIC_SUPABASE_URL ARG NEXT_PUBLIC_SUPABASE_ANON_KEY ARG NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY ARG NEXT_PUBLIC_GA_ID +ARG NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY ENV NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY=$NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY ENV NEXT_PUBLIC_GA_ID=$NEXT_PUBLIC_GA_ID +ENV NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL=$NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL COPY package*.json ./ RUN npm install --legacy-peer-deps COPY . . @@ -21,6 +23,7 @@ ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY ENV NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY=$NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY ENV NEXT_PUBLIC_GA_ID=$NEXT_PUBLIC_GA_ID +ENV NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL=$NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL COPY --from=builder /app/package.json ./ COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/.next ./.next diff --git a/README.md b/README.md index 5751882..86240d2 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,8 @@ - `NEXT_PUBLIC_Supabase_URL`:Supabase 项目 URL - `NEXT_PUBLIC_Supabase_ANON_KEY`:Supabase 匿名公钥 - `NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY`:Web3Forms Access Key - - `NEXT_PUBLIC_GA_ID`:Google Analytics Measurement ID(形如 `G-xxxx`) + - `NEXT_PUBLIC_GA_ID`:Google Analytics Measurement ID(如 `G-xxxx`) + - `NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL`:GitHub 最新 Release 接口地址,用于在页面中展示“发现新版本”提示(如:`https://api.github.com/repos/hzm0321/real-time-fund/releases/latest`) 注:如不使用登录、反馈或 GA 统计功能,可不设置对应变量 @@ -86,7 +87,7 @@ 本项目已配置 GitHub Actions。每次推送到 `main` 分支时,会自动执行构建并部署到 GitHub Pages。 如需使用 GitHub Actions 部署,请在 GitHub 项目 Settings → Secrets and variables → Actions 中创建对应的 Repository secrets(字段名称与 `.env.local` 保持一致)。 -包括:`NEXT_PUBLIC_Supabase_URL`、`NEXT_PUBLIC_Supabase_ANON_KEY`、`NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY`、`NEXT_PUBLIC_GA_ID`。 +包括:`NEXT_PUBLIC_Supabase_URL`、`NEXT_PUBLIC_Supabase_ANON_KEY`、`NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY`、`NEXT_PUBLIC_GA_ID`、`NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL`。 若要手动构建: ```bash diff --git a/app/api/fund.js b/app/api/fund.js index b5a3155..5c572ad 100644 --- a/app/api/fund.js +++ b/app/api/fund.js @@ -432,7 +432,10 @@ export const fetchShanghaiIndexDate = async () => { }; export const fetchLatestRelease = async () => { - const res = await fetch('https://api.github.com/repos/hzm0321/real-time-fund/releases/latest'); + const url = process.env.NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL; + if (!url) return null; + + const res = await fetch(url); if (!res.ok) return null; const data = await res.json(); return { diff --git a/app/page.jsx b/app/page.jsx index c95b488..0b86195 100644 --- a/app/page.jsx +++ b/app/page.jsx @@ -460,6 +460,9 @@ export default function HomePage() { const [isSyncing, setIsSyncing] = useState(false); useEffect(() => { + // 未配置 GitHub 最新版本接口地址时,不进行更新检查 + if (!process.env.NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL) return; + const checkUpdate = async () => { try { const data = await fetchLatestRelease(); diff --git a/docker-compose.yml b/docker-compose.yml index 7f32a7c..df99c56 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,7 @@ services: NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY} NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY: ${NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY} NEXT_PUBLIC_GA_ID: ${NEXT_PUBLIC_GA_ID} + NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL: ${NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL} ports: - "3000:3000" diff --git a/env.example b/env.example index e515a53..10ea902 100644 --- a/env.example +++ b/env.example @@ -13,4 +13,10 @@ NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY=your_web3forms_access_key # 从 Google Analytics 中获取这些值 https://analytics.google.com/analytics/web/ NEXT_PUBLIC_GA_ID=G-xxxxxxxxxx +# GitHub Release 检查配置 +# 若需要在页面中展示「发现新版本」更新提示,请配置为对应仓库的最新 Release 接口地址 +# 例如本仓库默认值: +# https://api.github.com/repos/hzm0321/real-time-fund/releases/latest +NEXT_PUBLIC_GITHUB_LATEST_RELEASE_URL= + # 如果要用 Github Actions 部署,需要在 Github 项目 Settings → secrets and actions → Actions → 创建 Repository secrets