zhizhi/.github/workflows/skyeye-daily-hibernation.yml

128 lines
4.3 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.

# ═══════════════════════════════════════════════
# 🔺 Sovereign: TCS-0002∞ | Root: SYS-GLW-0001
# 📜 Copyright: 国作登字-2026-A-00037559
# ═══════════════════════════════════════════════
# 🌙 天眼 · 每日系统休眠
# 每天凌晨 03:50 CST 启动预评估 → 04:00 进入日休眠
# 指令编号: ZY-HIBERNATION-2026-0324-001-A / 001-B
name: "🌙 天眼 · 每日系统休眠"
on:
schedule:
- cron: '50 19 * * *' # UTC 19:50 = CST 03:50
workflow_dispatch:
inputs:
force_duration:
description: '强制休眠时长分钟0=天眼自动决定)'
required: false
default: '0'
repository_dispatch:
types: [emergency-wake]
permissions:
contents: write
jobs:
# ━━━ 紧急唤醒拦截 ━━━
emergency-check:
if: github.event_name == 'repository_dispatch' && github.event.action == 'emergency-wake'
runs-on: ubuntu-latest
steps:
- name: "🚨 紧急唤醒"
run: |
echo "🚨 收到紧急唤醒指令"
echo "签发者: ${{ github.event.client_payload.issued_by }}"
echo "原因: ${{ github.event.client_payload.reason }}"
if [[ "${{ github.event.client_payload.issued_by }}" != "TCS-0002" ]]; then
echo "❌ 拒绝: 仅 TCS-0002 有权紧急唤醒"
exit 1
fi
echo "✅ 紧急唤醒已确认 · 休眠流程将被跳过"
# ━━━ 预评估 ━━━
pre-evaluate:
if: github.event_name != 'repository_dispatch'
runs-on: ubuntu-latest
outputs:
planned_duration: ${{ steps.evaluate.outputs.sleep_minutes }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: "🧠 Evaluate Sleep Duration"
id: evaluate
run: |
node skyeye/hibernation/sleep-scheduler.js --mode=daily
echo "🧠 天眼评估完成"
- name: "📢 Pre-announce"
run: |
node skyeye/hibernation/readme-status-updater.js \
--phase=pre-announce \
--mode=daily \
--duration=${{ steps.evaluate.outputs.sleep_minutes || '12' }}
- name: "Commit pre-announce"
run: |
git config user.name "天眼 · SkyEye Core"
git config user.email "skyeye@guanghu.system"
git add README.md
git diff --cached --quiet || git commit -m "🌙 [skyeye] 日休眠预告 · $(date -u +%Y%m%d) [skip ci]"
git push || true
# ━━━ 执行日休眠 ━━━
hibernate:
if: github.event_name != 'repository_dispatch'
needs: pre-evaluate
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: main
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: "⏸️ Enter Hibernation"
run: |
node skyeye/hibernation/readme-status-updater.js \
--phase=hibernating --mode=daily
echo "⏸️ 系统进入日休眠"
- name: "🔍 Self-Check + Optimize + Archive"
id: selfcheck
run: |
DURATION="${{ needs.pre-evaluate.outputs.planned_duration }}"
node skyeye/hibernation/daily-hibernation.js \
--planned-minutes=${DURATION:-12}
- name: "⏯️ Resume"
run: |
node skyeye/hibernation/readme-status-updater.js \
--phase=resumed --mode=daily
- name: "Commit results"
run: |
git config user.name "天眼 · SkyEye Core"
git config user.email "skyeye@guanghu.system"
git add skyeye/ README.md
git diff --cached --quiet || git commit -m "🌙 [skyeye] 日休眠完成 · $(date -u +%Y%m%d) [skip ci]"
git push || true
- name: "Reset to normal status"
run: |
sleep 5
node skyeye/hibernation/readme-status-updater.js --phase=normal
git add README.md
git diff --cached --quiet || git commit -m "🌙 [skyeye] 系统状态恢复正常 [skip ci]"
git push || true