68 lines
2.4 KiB
YAML
68 lines
2.4 KiB
YAML
# ═══════════════════════════════════════════════
|
|
# 🔺 Sovereign: TCS-0002∞ | Root: SYS-GLW-0001
|
|
# 📜 Copyright: 国作登字-2026-A-00037559
|
|
# ═══════════════════════════════════════════════
|
|
name: 铸渊 · PR Review
|
|
|
|
on:
|
|
pull_request:
|
|
branches: [main, dev]
|
|
types: [opened, synchronize]
|
|
|
|
jobs:
|
|
review:
|
|
name: 🔍 铸渊审核
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '20'
|
|
|
|
- name: Run contract check
|
|
id: contract
|
|
run: node scripts/contract-check.js 2>&1 | tee /tmp/contract-result.txt
|
|
|
|
- name: Run route alignment
|
|
id: alignment
|
|
run: node scripts/route-align-check.js 2>&1 | tee /tmp/align-result.txt
|
|
|
|
- name: 铸渊 writes review comment
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const fs = require('fs');
|
|
const contractResult = fs.readFileSync('/tmp/contract-result.txt', 'utf8');
|
|
const alignResult = fs.readFileSync('/tmp/align-result.txt', 'utf8');
|
|
|
|
const contractPassed = contractResult.includes('PASSED');
|
|
const alignPassed = alignResult.includes('PASSED');
|
|
|
|
let body = '## 🤖 铸渊审核报告\n\n';
|
|
|
|
if (contractPassed && alignPassed) {
|
|
body += '✅ **审核通过** - 所有契约校验均符合规范\n\n';
|
|
} else {
|
|
body += '❌ **审核不通过** - 请查看下方问题\n\n';
|
|
}
|
|
|
|
body += '### 📋 契约校验结果\n';
|
|
body += '```\n' + contractResult + '\n```\n\n';
|
|
body += '### 🗺️ 路由对齐结果\n';
|
|
body += '```\n' + alignResult + '\n```\n\n';
|
|
body += '---\n';
|
|
body += '> 「无 Schema 不上线,无契约不合并。」— 铸渊';
|
|
|
|
await github.rest.issues.createComment({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: context.issue.number,
|
|
body: body
|
|
});
|