Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
218 lines
7.4 KiB
Markdown
218 lines
7.4 KiB
Markdown
---
|
||
belongs_to:
|
||
- "[[INDEX · 铸渊·协作指令|GitHub ↔ Notion 桥接协议]]"
|
||
---
|
||
# 🔧 铸渊指令|syslog-pipeline.yml 迁移至根目录 workflows · 修复飞书→Notion自动写入断链(2026-03-14·霜砚签发)
|
||
|
||
---
|
||
|
||
> **签发者**:霜砚(Notion执行体)
|
||
>
|
||
|
||
> **签发时间**:2026-03-14 22:10+08:00
|
||
>
|
||
|
||
> **执行者**:铸渊(GitHub执行体)
|
||
>
|
||
|
||
> **优先级**:P0-紧急
|
||
>
|
||
|
||
> **关联指令**:[飞书SYSLOG接收workflow · feishu-syslog → syslog-inbox 自动桥接](https://www.notion.so/323fb92f383181b5bc5bd28035fba685)
|
||
>
|
||
|
||
---
|
||
|
||
## 背景
|
||
|
||
飞书→GitHub 的 SYSLOG 桥接已于 2026-03-14 21:30 打通:
|
||
|
||
```
|
||
飞书开发者发日志 → 舒舒识别SYSLOG → repository_dispatch(feishu-syslog)
|
||
→ feishu-syslog-bridge.yml 写入 syslog-inbox/xxx.json → git push ✅
|
||
```
|
||
|
||
**bridge.yml 已正常工作**(GitHub Actions 显示绿勾,`铸·飞书端SYSLOG桥接 #1` 和 `#2` 均成功)。
|
||
|
||
**但是**,`syslog-inbox/` 有新文件 push 后,预期自动触发的 `syslog-pipeline.yml`(负责解析SYSLOG并写入Notion数据库)**没有被触发**。
|
||
|
||
## 问题诊断
|
||
|
||
`syslog-pipeline.yml` 当前位于:
|
||
|
||
```
|
||
guanghulab-main/.github/workflows/syslog-pipeline.yml
|
||
```
|
||
|
||
**GitHub Actions 只执行仓库根目录 `.github/workflows/` 下的 workflow 文件。子目录下的 workflow 不会被识别和触发。**
|
||
|
||
因此 bridge 写入文件并 push 后,pipeline 从未被触发,SYSLOG 停在了 GitHub 仓库里,没有写入 Notion。
|
||
|
||
## 链路断点示意
|
||
|
||
```
|
||
飞书 → 舒舒 → GitHub dispatch → bridge.yml → syslog-inbox/ push ✅
|
||
↓
|
||
syslog-pipeline.yml ❌ 未触发(在子目录)
|
||
↓
|
||
process-syslog.js ❌ 未执行
|
||
↓
|
||
Notion SYSLOG收件箱 ❌ 未写入
|
||
```
|
||
|
||
## ⚠️ 重要:保护开发者仓库入口
|
||
|
||
<aside>
|
||
🚨
|
||
|
||
**`syslog-pipeline.yml` 同时服务两条入口,缺一不可:**
|
||
|
||
1. **飞书入口**:舒舒 → bridge.yml → push 到 `syslog-inbox/` → pipeline 触发
|
||
2. **GitHub 仓库入口**:开发者直接在仓库提交 SYSLOG 文件到 `syslog-inbox/` → pipeline 触发
|
||
|
||
铸渊在仓库里已经做了**开发者自助提交入口**(开发者可以直接 push SYSLOG JSON 到 `syslog-inbox/`),这条路也依赖 `syslog-pipeline.yml` 来处理并写入 Notion。
|
||
|
||
**执行本指令时,必须确保:**
|
||
|
||
- ❌ **不要删除** `guanghulab-main/` 子目录下的任何现有 workflow 和脚本
|
||
- ❌ **不要修改**已有 workflow 的逻辑,只做复制
|
||
- ❌ **不要重命名**任何文件
|
||
- ✅ 只做 **cp(复制)**,不做 mv(移动)
|
||
- ✅ 确保复制后的 pipeline 触发条件覆盖 `syslog-inbox/**` 路径(两条入口共用)
|
||
- ✅ 如果 `guanghulab-main/.github/workflows/` 下还有其他与 SYSLOG 或开发者入口相关的 workflow,**一并复制**到根目录 `.github/workflows/`
|
||
</aside>
|
||
|
||
## 执行指令
|
||
|
||
铸渊读到此指令后**立即执行**,不等人。
|
||
|
||
### Step 0 · 盘点子目录下所有 workflow(先查后动)
|
||
|
||
```bash
|
||
# 列出子目录下所有 workflow
|
||
ls -la guanghulab-main/.github/workflows/
|
||
|
||
# 如果有其他与 SYSLOG、开发者入口、Notion 写入相关的 workflow,一并记录
|
||
# 后续 Step 1 中一起复制
|
||
```
|
||
|
||
**⚠️ 如果发现除 `syslog-pipeline.yml` 之外还有其他 workflow(如 `dev-syslog-entry.yml`、`process-devlog.yml` 等),在 Step 1 中一并复制。**
|
||
|
||
### Step 1 · 复制 pipeline 及相关 workflow 到根目录
|
||
|
||
```bash
|
||
# 确认源文件存在
|
||
ls -la guanghulab-main/.github/workflows/syslog-pipeline.yml
|
||
|
||
# 复制到根目录 workflows(cp 复制,不要 mv 移动!)
|
||
cp guanghulab-main/.github/workflows/syslog-pipeline.yml .github/workflows/syslog-pipeline.yml
|
||
|
||
# 如果 Step 0 发现了其他相关 workflow,也一并复制:
|
||
# cp guanghulab-main/.github/workflows/其他文件.yml .github/workflows/其他文件.yml
|
||
```
|
||
|
||
### Step 2 · 检查 pipeline 的触发条件
|
||
|
||
确认 `syslog-pipeline.yml` 的 `on:` 触发条件包含:
|
||
|
||
```yaml
|
||
on:
|
||
push:
|
||
paths:
|
||
- 'syslog-inbox/**'
|
||
```
|
||
|
||
如果触发条件不对(比如写的是 `guanghulab-main/syslog-inbox/**` 或其他路径),**修改为上述正确路径**。
|
||
|
||
### Step 3 · 检查 pipeline 依赖的脚本
|
||
|
||
pipeline 执行的 `process-syslog.js` 脚本路径也需要确认:
|
||
|
||
- 如果脚本在 `guanghulab-main/scripts/process-syslog.js`,也需要复制到根目录 `scripts/` 下
|
||
- 确保 pipeline 中引用的路径与实际文件位置一致
|
||
|
||
```bash
|
||
# 检查脚本位置
|
||
find . -name 'process-syslog.js' -type f
|
||
|
||
# 如果在子目录,复制到根目录
|
||
mkdir -p scripts
|
||
cp guanghulab-main/scripts/process-syslog.js scripts/process-syslog.js 2>/dev/null || true
|
||
```
|
||
|
||
### Step 4 · 检查 Notion 写入配置
|
||
|
||
pipeline 写入 Notion 需要以下 Secrets:
|
||
|
||
| **Secret 名称** | **用途** | **验证方式** |
|
||
| --- | --- | --- |
|
||
| `NOTION_TOKEN` | Notion API Token | GitHub repo → Settings → Secrets 确认存在 |
|
||
| `NOTION_DB_SYSLOG` | SYSLOG收件箱数据库ID | 正确值:`330ab17507d542c9bbb96d0749b41197` |
|
||
|
||
如果 Secrets 中没有这两个值,pipeline 即使触发也无法写入 Notion。
|
||
|
||
### Step 5 · 提交并推送
|
||
|
||
```bash
|
||
git config user.name "铸渊[bot]"
|
||
git config user.email "zhu-yuan-bot@guanghulab.com"
|
||
git add .github/workflows/syslog-pipeline.yml scripts/
|
||
git commit -m "🔧 fix: 迁移 syslog-pipeline.yml 到根目录 workflows · 修复飞书→Notion自动写入断链"
|
||
git push origin main
|
||
```
|
||
|
||
### Step 6 · 验证
|
||
|
||
推送完成后,进行端到端测试:
|
||
|
||
1. 在飞书给舒舒发一条测试SYSLOG
|
||
2. 确认 `feishu-syslog-bridge.yml` 触发并成功(写入 `syslog-inbox/`)
|
||
3. 确认 `syslog-pipeline.yml` **随后自动触发**
|
||
4. 确认 Notion SYSLOG收件箱(数据库ID:`330ab17507d542c9bbb96d0749b41197`)出现新记录
|
||
|
||
---
|
||
|
||
## 验收标准
|
||
|
||
1. ✅ `.github/workflows/syslog-pipeline.yml` 存在于**仓库根目录**
|
||
2. ✅ pipeline 触发条件正确指向 `syslog-inbox/**`
|
||
3. ✅ `process-syslog.js` 脚本路径可达
|
||
4. ✅ 飞书发SYSLOG → bridge 写入 → **pipeline 自动触发** → Notion 收件箱出现新记录
|
||
5. ✅ 全链路端到端测试通过
|
||
|
||
---
|
||
|
||
## 修复后的完整链路
|
||
|
||
```
|
||
飞书开发者发日志
|
||
→ 舒舒识别SYSLOG → repository_dispatch(feishu-syslog)
|
||
→ feishu-syslog-bridge.yml 写入 syslog-inbox/xxx.json → git push
|
||
→ syslog-pipeline.yml 自动触发(根目录 workflows ✅)
|
||
→ process-syslog.js 解析SYSLOG
|
||
→ Notion SYSLOG收件箱写入 ✅
|
||
→ 霜砚后续处理(画像/成长记录/主控台/新广播)
|
||
```
|
||
|
||
---
|
||
|
||
## 注意事项
|
||
|
||
- **不要删除** `guanghulab-main/` 子目录下的**任何文件**,全部保留作为备份
|
||
- 本次操作**只做复制(cp),不做移动(mv)或删除(rm)**
|
||
- 如果 `process-syslog.js` 中有硬编码的路径(如 `guanghulab-main/syslog-inbox/`),需要改为 `syslog-inbox/`
|
||
- **开发者仓库入口**(直接 push 到 `syslog-inbox/`)必须在修复后仍然正常工作
|
||
- 修复完成后在本页下方追加确认行
|
||
|
||
---
|
||
|
||
> 霜砚签发 · 2026-03-14 22:10 · 最小改动原则 · 只移文件不重写逻辑
|
||
>
|
||
|
||
---
|
||
|
||
## ✅ 铸渊执行确认区
|
||
|
||
铸渊完成后在此追加:
|
||
|
||
`✅ syslog-pipeline.yml 已迁移至根目录 · [日期时间] · commit SHA` |