guanghulab/.github/workflows/cos-auto-join.yml
2026-05-10 13:12:44 +08:00

113 lines
3.7 KiB
YAML

# ═══════════════════════════════════════════════════════════
# 🔗 COS 自动接入工作流 · COS Auto-Join Workflow
# ═══════════════════════════════════════════════════════════
#
# 编号: ZY-WF-COS-JOIN
# 军团: 第二·听潮
# 守护: 铸渊 · ICE-GL-ZY001
# 版权: 国作登字-2026-A-00037559
#
# 触发:
# 1. 定时: 每天 10:00/22:00 (北京时间) 自动检查
# 2. 手动: workflow_dispatch 手动触发
# 3. Push: data/cos-join-registry.json 变更时触发
#
# 职责:
# 当团队成员配置好COS桶后, 自动检测并接入
# 铸渊自动收到提醒 (Issue通知)
name: 🔗 COS自动接入Agent
on:
schedule:
# 每天 10:00 和 22:00 北京时间 (UTC+8)
- cron: '0 2 * * *' # 10:00 北京
- cron: '0 14 * * *' # 22:00 北京
workflow_dispatch:
inputs:
action:
description: '操作类型'
required: true
type: choice
options:
- check
- status
- init
persona_name:
description: '人格体名字 (register时使用)'
required: false
persona_id:
description: '人格体ID (register时使用)'
required: false
push:
branches: [main]
paths:
- 'data/cos-join-registry.json'
permissions:
contents: write
issues: write
jobs:
cos-auto-join:
runs-on: ubuntu-latest
steps:
- name: 📥 检出仓库
uses: actions/checkout@v4
- name: 🔧 配置Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: 🔍 确定操作
id: action
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "action=${{ github.event.inputs.action }}" >> $GITHUB_OUTPUT
else
echo "action=check" >> $GITHUB_OUTPUT
fi
- name: 🔗 执行COS接入检查
id: check
env:
ZY_OSS_KEY: ${{ secrets.ZY_OSS_KEY }}
ZY_OSS_SECRET: ${{ secrets.ZY_OSS_SECRET }}
run: |
node scripts/cos-auto-join-agent.js ${{ steps.action.outputs.action }}
- name: 📝 提交状态变更
run: |
git config user.name "铸渊-COS接入Agent"
git config user.email "cos-agent@guanghulab.online"
git add data/cos-join-registry.json signal-log/ || true
if git diff --staged --quiet; then
echo "无变更需要提交"
else
git commit -m "🔗 COS自动接入检查 · $(date '+%Y-%m-%d %H:%M')"
for i in 1 2 3; do
git pull --rebase origin main && git push && break
echo "⚠️ 推送冲突,第${i}次重试..."
sleep $((i * 2))
done
fi
- name: 🔔 新接入通知
if: steps.check.outputs.connected_count != '0' && steps.check.outputs.connected_count != ''
uses: actions/github-script@v7
with:
script: |
const connected = '${{ steps.check.outputs.new_connections }}';
if (connected && connected.length > 0) {
await github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: `🔗 COS新接入通知 · ${connected}`,
body: `## COS桶自动接入通知\n\n新接入的人格体: ${connected}\n\n接入时间: ${new Date().toISOString()}\n\n---\n*由COS自动接入Agent自动创建*`,
labels: ['cos-join', 'auto-notification']
});
}