guanghulab/.github/archived-workflows/dev-portal-deploy.yml
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

132 lines
4.9 KiB
YAML
Raw Permalink 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
# ═══════════════════════════════════════════════
#
# 开发者门户部署工作流
# Developer Portal Channel Deploy
#
# 触发条件: PR 合并到 main 且修改了 docs/dev-portal/channels/
# 作用: 更新门户 manifest.json同步开发者动态到 Notion
#
name: 🌐 开发者门户 · 频道部署
on:
push:
branches: [main]
paths:
- 'docs/dev-portal/channels/**'
permissions:
contents: write
jobs:
update-manifest:
name: 📋 更新门户清单
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: 🔍 检测频道变更
id: detect
run: |
# Find which channels were updated
CHANGED=$(git diff --name-only HEAD~1 HEAD -- docs/dev-portal/channels/ || true)
if [ -z "$CHANGED" ]; then
echo "skip=true" >> "$GITHUB_OUTPUT"
echo "无频道文件变更"
exit 0
fi
echo "skip=false" >> "$GITHUB_OUTPUT"
# Extract unique DEV-IDs
DEV_IDS=$(echo "$CHANGED" | grep -oP 'DEV-\d{3}' | sort -u | tr '\n' ',' | sed 's/,$//')
echo "dev_ids=$DEV_IDS" >> "$GITHUB_OUTPUT"
echo "变更频道: $DEV_IDS"
# Count files per channel
echo "$CHANGED" | while read f; do echo " · $f"; done
- name: 📋 更新 manifest.json
if: steps.detect.outputs.skip != 'true'
run: |
node -e "
const fs = require('fs');
const path = require('path');
const manifestPath = 'docs/dev-portal/manifest.json';
const configPath = '.github/persona-brain/gate-guard-config.json';
const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
const devIds = '${{ steps.detect.outputs.dev_ids }}'.split(',').filter(Boolean);
const now = new Date().toISOString();
for (const devId of devIds) {
if (!manifest.channels[devId]) continue;
// Update channel info
const ch = manifest.channels[devId];
ch.status = 'active';
ch.last_deploy = now;
ch.deploy_count = (ch.deploy_count || 0) + 1;
// Scan channel directory for modules
const channelDir = path.join('docs/dev-portal/channels', devId);
if (fs.existsSync(channelDir)) {
const items = fs.readdirSync(channelDir).filter(f => f !== 'README.md' && f !== '.gitkeep');
ch.modules = items;
ch.last_deploy_summary = items.length + ' 个文件已部署';
}
// Add activity entry
const devConfig = config.developer_permissions && config.developer_permissions[devId];
manifest.recent_activity.unshift({
time: now,
dev_id: devId,
dev_name: devConfig ? devConfig.name : devId,
persona_id: devConfig ? devConfig.persona_id : null,
summary: '部署更新到 ' + devId + ' 频道'
});
}
// Keep only last 50 activity entries
manifest.recent_activity = manifest.recent_activity.slice(0, 50);
manifest.updated_at = now;
manifest.updated_by = 'dev-portal-deploy';
fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n');
console.log('✅ manifest.json 已更新');
"
- name: 📡 同步开发者动态到 Notion
if: steps.detect.outputs.skip != 'true' && env.NOTION_API_KEY != ''
env:
NOTION_API_KEY: ${{ secrets.NOTION_API_KEY }}
DEV_PROFILE_DB_ID: ${{ secrets.DEV_PROFILE_DB_ID }}
run: |
node scripts/skyeye/dev-portal-notion-sync.js \
--dev-ids "${{ steps.detect.outputs.dev_ids }}" \
--action "channel_deploy" \
--timestamp "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|| echo "⚠️ Notion同步失败非致命"
- name: 💾 提交 manifest 更新
if: steps.detect.outputs.skip != 'true'
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add docs/dev-portal/manifest.json
git diff --cached --quiet && echo "无变更" || git commit -m "📋 开发者门户: 更新频道清单 [${{ steps.detect.outputs.dev_ids }}]"
git push 2>&1 || echo "⚠️ manifest 推送失败(非致命)"