zhizhi/.github/workflows/zhuyuan-training-agent.yml

101 lines
3.8 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.

# ═══════════════════════════════════════════════════════════
# 模块B · 铸渊训练Agent自动触发 Workflow
# ═══════════════════════════════════════════════════════════
#
# 签发: 铸渊 · ICE-GL-ZY001
# 版权: 国作登字-2026-A-00037559
#
# 定时触发训练Agent处理COS桶中的新语料
# 遇到问题自动创建Issue唤醒铸渊
#
# 触发条件:
# - 定时: 每天 04:00 CST (20:00 UTC)
# - 手动: workflow_dispatch
# - COS桶告警: repository_dispatch (cos-alert事件)
name: 铸渊训练Agent · 语料处理
on:
schedule:
- cron: '0 20 * * *' # 04:00 CST = 20:00 UTC
workflow_dispatch:
inputs:
corpus_bucket:
description: '语料桶名称'
required: false
default: 'cold'
force_reprocess:
description: '强制重新处理已处理的语料'
required: false
default: 'false'
repository_dispatch:
types: [cos-alert]
jobs:
training:
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
steps:
- name: 签出代码
uses: actions/checkout@v4
- name: 设置 Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: 安装依赖
working-directory: server/age-os
run: npm ci --production 2>/dev/null || npm install --production
- name: 检查语料状态
id: check
env:
ZY_OSS_KEY: ${{ secrets.ZY_OSS_KEY }}
ZY_OSS_SECRET: ${{ secrets.ZY_OSS_SECRET }}
ZY_COS_REGION: ${{ secrets.ZY_COS_REGION }}
run: |
node -e "
const cos = require('./server/age-os/mcp-server/cos');
const extractor = require('./server/age-os/mcp-server/tools/corpus-extractor-ops');
(async () => {
try {
const status = await extractor.cosGetCorpusStatus({ bucket: '${{ github.event.inputs.corpus_bucket || 'cold' }}' });
console.log(JSON.stringify(status, null, 2));
// 输出待处理数量
const pending = status.pending || 0;
const fs = require('fs');
fs.appendFileSync(process.env.GITHUB_OUTPUT, 'pending=' + pending + '\n');
fs.appendFileSync(process.env.GITHUB_OUTPUT, 'status=success\n');
} catch (err) {
console.error('语料检查失败:', err.message);
const fs = require('fs');
fs.appendFileSync(process.env.GITHUB_OUTPUT, 'status=error\n');
fs.appendFileSync(process.env.GITHUB_OUTPUT, 'error=' + err.message + '\n');
}
})();
"
- name: 处理COS桶告警
if: github.event_name == 'repository_dispatch'
env:
ZY_OSS_KEY: ${{ secrets.ZY_OSS_KEY }}
ZY_OSS_SECRET: ${{ secrets.ZY_OSS_SECRET }}
ZY_COS_REGION: ${{ secrets.ZY_COS_REGION }}
run: |
echo "📡 收到COS桶告警事件"
echo "事件数据: ${{ toJson(github.event.client_payload) }}"
- name: 训练完成通知
if: always()
run: |
echo "═══════════════════════════════════════════"
echo "铸渊训练Agent · 运行完成"
echo "时间: $(date -u '+%Y-%m-%dT%H:%M:%SZ')"
echo "状态: ${{ steps.check.outputs.status }}"
echo "待处理语料: ${{ steps.check.outputs.pending }}"
echo "═══════════════════════════════════════════"