ad118b470d55731ad741b5d406b8d4cae664cc4b
Deploy to Production / pre-check (push) Successful in 54s
Deploy to Production / build (push) Successful in 9m8s
Deploy to Production / deploy-edgeone (push) Successful in 5m29s
Deploy to Production / deploy-upyun (push) Successful in 6s
Deploy to Production / finalize (push) Successful in 4m17s
Deploy to Production / notify-failure (push) Skipped
根因:/opt/gitea/runner/config.yaml 中 container.network=gitea_default (job 容器落在 172.20.x),但 runner 容器自身只挂在 bridge 网络 (172.17.0.2),其提供的缓存服务 172.17.0.2:44869 跨 bridge 网段不可达。 实测证据: - runner 容器内 wget http://127.0.0.1:44869/ -> HTTP 404(服务活着) - gitea 容器 wget http://172.17.0.2:44869/ -> download timed out - 构建日志:Setup Node restore 死等 278s(01:07:17 -> 01:11:55 ETIMEDOUT) Post Setup Node save 死等 288s(01:14:54 -> 01:19:42 ETIMEDOUT) Cache Hugo resources restore 亦超时 合计每次构建约 10 分钟纯浪费,且缓存从未真正命中或保存成功过。 改动: - Setup Node 的 cache 改为按 github.server_url 条件启用;Gitea 上 表达式求值为空串,setup-node 自动跳过缓存 - Cache Hugo resources 步骤加 if 条件,Gitea 上不执行(避免 restore+save 双超时) - npm ci 增加 --no-audit --no-fund - step summary 在 Gitea 上如实显示"已跳过",不再误报"未命中" 无副作用:npm ci 实测 68s 本就是在无缓存状态下跑的(restore 从未成功), 去掉缓存不会使其变慢;GitHub 侧行为完全不变。
博客项目说明
本项目使用 Hugo 构建,主题为 Ying。以下是主要的配置说明与脚本使用指南,方便后续查阅和维护。
1. 常用脚本与工具 (Scripts)
项目包含多个 PowerShell 和 Node.js 脚本,用于自动化维护、检查和部署。
1.1 日常维护
-
新建文章 (
./new_post.ps1)- 用途: 交互式创建新的博客文章。
- 功能: 自动引导输入标题、Slug、分类、标签等信息,并按
YYYY-MM-DD-Slug格式创建 Page Bundle 目录和文件。 - 运行:
./new_post.ps1
-
手动构建与检查 (
./deploy.ps1)- 用途: 手动执行构建,包含友链健康检查。
- 流程:
- 运行
scripts/check_links.js检查友链连通性。 - 如果检查通过,执行
hugo --minify生成静态文件。
- 运行
- 运行:
./deploy.ps1
1.2 自动化与 CI/CD 工具
以下脚本主要在 GitHub Actions (.github/workflows/upy.yml) 中自动运行,也可手动用于调试:
-
友链数据同步 (
scripts/update_link_lite_json.ps1)- 功能: 将
themes/Ying/data/links.yaml(YAML源数据) 转换为themes/Ying/static/json/link_lite.json,供前端 JS 和检查脚本使用。
- 功能: 将
-
友链健康检查 (
scripts/check_links.js)- 功能: 读取
link_lite.json,并发检查所有友链的可访问性。 - 依赖:
node-fetch(内置于 Node 18+ 或作为依赖)。
- 功能: 读取
-
朋友圈数据生成 (
scripts/generate_circle_data.js)- 功能: 根据友链抓取 RSS/Atom 订阅源,生成朋友圈更新数据 (
friend_circle_data.json)。 - 依赖:
rss-parser.
- 功能: 根据友链抓取 RSS/Atom 订阅源,生成朋友圈更新数据 (
-
构建安全预处理 (
scripts/add_draft_to_hidden.ps1)- 功能: 在构建前扫描
content/post,将标记为status: hidden的文章强制设置为draft: true,防止隐私文章意外泄露到公共列表。
- 功能: 在构建前扫描
-
CDN 刷新 (
scripts/RefreshCDN.py)- 功能: 部署完成后调用 DogeCloud API 刷新 CDN 缓存。
- 配置: 需要在环境变量中设置
DOGECLOUD_ACCESS_KEY等参数。
2. 基础配置 (hugo.toml)
位于项目根目录下,控制网站的全局行为。
- 网站信息: 标题、BaseURL、语言等。
- 固定链接 (Permalinks):
文章页面使用 Front Matter 中的
[permalinks] post = "/:slug"slug字段作为文件名(例如https://usj.cc/my-post.html)。
3. 主题配置
- 主题目录:
themes/Ying/ - 友链数据:
themes/Ying/data/links.yaml- 添加友链请直接编辑此 YAML 文件,构建时会自动同步到 JSON。
4. 文章管理指南
URL 设置
文章默认使用 slug 字段作为 URL 的文件名。
title: "我的文章"
date: 2023-01-01
slug: "my-post"
生成的链接为: https://usj.cc/my-post.html
隐藏文章
如果你想写一篇不公开在列表显示的文章(但可以通过链接访问):
- 在 Front Matter 中添加
status: hidden。 - 自动化脚本会在构建时将其标记为
draft: true(配合特殊构建逻辑) 或进行其他处理。 注:具体表现取决于 CI 脚本的逻辑,通常用于草稿或隐藏页。
Languages
TypeScript
43.1%
CSS
24.9%
JavaScript
18.1%
HTML
7.9%
Shell
4%
Other
2%