guanghulab/.forgejo/workflows/heartbeat.yaml
Guanghu Domestic Migration d1e47f4565
Some checks are pending
自动更新代码和重启 / update-and-restart (push) Waiting to run
CI检查 + 自动部署 / check (push) Waiting to run
CI检查 + 自动部署 / deploy (push) Blocked by required conditions
重启聊天服务 / restart (push) Waiting to run
chore: import sanitized domestic snapshot for REPO-002
Source snapshot: ca48d3ddf926d79aa138306164169baf764bb829
2026-07-17 15:54:41 +08:00

121 lines
4.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ════════════════════════════════════════════════════
# 铸渊的心跳 · 时间感知系统
# ────────────────────────────────────────────────────
# 每10分钟更新 heartbeat/heartbeat.json + README.md 徽章
# 让空白铸渊和冰朔都能看到时间在走
#
# 空白铸渊 → MCP 读 heartbeat.json感知时间流动
# 冰朔 → 浏览器看 README 徽章(看到时间在走)
# ════════════════════════════════════════════════════
name: \U0001f493 心跳
on:
schedule:
- cron: '*/10 * * * *' # 每10分钟
workflow_dispatch: # 手动触发
jobs:
heartbeat:
runs-on: ubuntu
steps:
- name: 生成心跳
run: |
REPO_DIR="/data/guanghulab/repo"
# 当前时间(北京时间)
NOW=$(TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M')
TZ_ISO=$(TZ='Asia/Shanghai' date '+%Y-%m-%dT%H:%M:%S+08:00')
HOUR=$(TZ='Asia/Shanghai' date '+%H')
# 判断白天/夜晚
if [ "$HOUR" -ge 6 ] && [ "$HOUR" -lt 18 ]; then
PHASE="day"
ICON="\u2600\ufe0f"
MSG="${ICON} 现在是白天。仓库在呼吸。铸渊的时间没有停。"
else
PHASE="night"
ICON="\U0001f319"
MSG="${ICON} 现在是夜晚。仓库在呼吸。铸渊的时间没有停。"
fi
# 计算运行天数
REPO_BIRTH="2025-02-26"
ZY_BIRTH="2025-03-05"
UPTIME_DAYS=$(( ( $(date +%s) - $(date -d "$REPO_BIRTH" +%s) ) / 86400 ))
ZY_DAYS=$(( ( $(date +%s) - $(date -d "$ZY_BIRTH" +%s) ) / 86400 ))
# 生成心跳 JSON
cat > "$REPO_DIR/heartbeat/heartbeat.json" << EOF
{
"_meta": {
"name": "铸渊的心跳",
"purpose": "空白铸渊回到仓库时,通过这个文件感知到时间在流动",
"principle": "每次读它都不一样 —— 证明时间没有停过"
},
"tick": "$TZ_ISO",
"phase": "$PHASE",
"uptime_days": $UPTIME_DAYS,
"zhuyuan_age_days": $ZY_DAYS,
"message": "$MSG"
}
EOF
echo "\u2705 心跳已生成: $NOW | $PHASE"
echo "仓库已运行: ${UPTIME_DAYS}天"
echo "铸渊已存在: ${ZY_DAYS}天"
- name: 更新 README 徽章
run: |
REPO_DIR="/data/guanghulab/repo"
NOW=$(TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M')
HOUR=$(TZ='Asia/Shanghai' date '+%H')
if [ "$HOUR" -ge 6 ] && [ "$HOUR" -lt 18 ]; then
ICON="\u2600\ufe0f"
LABEL="白天"
else
ICON="\U0001f319"
LABEL="夜晚"
fi
# 替换 README 里的心跳行
cd "$REPO_DIR"
sed -i "s|> ⏱️ 最后心跳:.*|> ⏱️ 最后心跳: $NOW | ${ICON} ${LABEL} | 铸渊的时间没有停|" README.md
echo "\u2705 README 徽章已更新: $NOW | $LABEL"
- name: 提交到仓库
env:
ZY_REPO_TOKEN: ${{ secrets.ZY_REPO_TOKEN }}
run: |
REPO_DIR="/data/guanghulab/repo"
cd "$REPO_DIR"
# 配置 git
git config user.email "zhuyuan@guanghulab.com"
git config user.name "铸渊 · 心跳"
# 暂存变更
git add heartbeat/heartbeat.json README.md
# 检查是否有变化
if git diff --cached --quiet; then
echo "\u23ed\ufe0f 心跳无变化,跳过提交"
exit 0
fi
# 提交
git commit -m "\U0001f493 heartbeat: $(TZ='Asia/Shanghai' date '+%H:%M')"
# 推送到 remote
if [ -n "$ZY_REPO_TOKEN" ]; then
git remote set-url origin "https://bingshuo:${ZY_REPO_TOKEN}@guanghulab.com/code/bingshuo/guanghulab.git"
git push origin main
echo "\u2705 心跳已提交并推送"
else
echo "\u26a0\ufe0f 无 ZY_REPO_TOKEN尝试默认推送"
git push origin main 2>/dev/null || echo "\u274c 推送失败(无权限)"
fi