128 lines
4.3 KiB
YAML
128 lines
4.3 KiB
YAML
# ═══════════════════════════════════════════════
|
||
# 🔺 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
|