名称: 部署关联 描述: 关联事件与最近部署和代码变化。用于调查部署是否导致问题、查找变更或识别引入错误的提交。 允许的工具: Bash(python *)
部署关联
认证
重要: 凭证由代理层自动注入。不要检查环境变量中的 GITHUB_TOKEN——您将看不到它。直接运行脚本即可;认证是透明处理的。
核心问题:“什么变了?”
在任何事件调查中,第一个问题应该是:“最近部署了什么?”
可用脚本
所有脚本都在 .claude/skills/deployment-correlation/scripts/ 中
list_commits.py - 查找最近部署
python .claude/skills/deployment-correlation/scripts/list_commits.py --repo OWNER/REPO [--branch BRANCH] [--since TIMESTAMP] [--limit N]
# 示例:
python .claude/skills/deployment-correlation/scripts/list_commits.py --repo incidentfox/api --branch main --limit 20
python .claude/skills/deployment-correlation/scripts/list_commits.py --repo incidentfox/api --since "2026-01-27T00:00:00Z"
compare_commits.py - 版本间差异
python .claude/skills/deployment-correlation/scripts/compare_commits.py --repo OWNER/REPO --base BASE --head HEAD
# 示例:
python .claude/skills/deployment-correlation/scripts/compare_commits.py --repo incidentfox/api --base v1.2.3 --head main
python .claude/skills/deployment-correlation/scripts/compare_commits.py --repo incidentfox/api --base abc123 --head def456
get_commit.py - 详细提交信息
python .claude/skills/deployment-correlation/scripts/get_commit.py --repo OWNER/REPO --sha COMMIT_SHA
# 示例:
python .claude/skills/deployment-correlation/scripts/get_commit.py --repo incidentfox/api --sha abc1234
3步关联过程
第1步:获取最近部署
查找事件时间附近的部署:
# 列出生产分支的最近提交
python list_commits.py --repo org/repo --branch main --limit 20
关键问题:
- 事件前1-2小时内部署了什么?
- 部署成功还是失败?
- 谁触发了部署?
第2步:识别可疑提交
比较事件时间附近的代码变更:
# 比较当前状态与先前已知良好状态
python compare_commits.py --repo org/repo --base v1.2.3 --head main
# 获取特定提交详情
python get_commit.py --repo org/repo --sha abc123
寻找:
- 对失败组件/服务的更改
- 配置更改(环境变量、功能标志)
- 依赖项更新
- 数据库迁移
第3步:关联症状
匹配代码变更与观察到的症状。
关联检查清单:
- [ ] 时间线匹配:症状是否在部署完成后开始?
- [ ] 组件匹配:部署是否触及失败的服务?
- [ ] 模式匹配:错误消息是否与更改的代码相关?
关联模式
模式1:部署后延迟飙升
时间线:
14:00 - 部署完成
14:05 - 延迟增加
14:10 - 警报触发
调查:
1. list_commits.py --repo org/repo --branch main → 查找14:00部署
2. get_commit.py --repo org/repo --sha <sha> → 查看更改的文件
3. 寻找:连接池更改、超时配置、新外部调用
模式2:特定服务错误
症状: “服务X抛出NullPointerException”
调查:
1. compare_commits.py --base last-good-deploy --head current → 什么变了?
2. 过滤对服务X文件的更改
3. get_commit.py 可疑提交
模式3:逐渐退化
症状: 内存使用在几天内逐渐上升
调查:
1. list_commits.py --since "7天前" → 所有最近变更
2. 寻找:新缓存、数据结构更改、内存分配
快速命令参考
| 目标 | 命令 |
|---|---|
| 最近提交 | list_commits.py --repo X --branch main |
| 比较版本 | compare_commits.py --repo X --base v1 --head v2 |
| 提交详情 | get_commit.py --repo X --sha abc123 |
| 时间过滤 | list_commits.py --repo X --since "2026-01-27T00:00:00Z" |
输出格式
## 部署关联摘要
### 时间线
- **事件开始**: [时间戳]
- **最后成功部署**: [时间戳, 提交sha]
- **先前部署**: [时间戳, 提交sha]
### 自上次已知良好以来的变更
- **提交**: N提交
- **文件更改**: M文件
- **作者**: [列表]
### 可疑变更
1. **[提交 sha]** - [摘要]
- 文件: [更改文件列表]
- 可疑原因: [为什么这可能相关]
### 关联置信度
- **高**: 部署明显匹配时间线并触及失败组件
- **中**: 时间线匹配但变更间接
- **低**: 无明显关联,考虑其他原因
### 推荐操作
1. [如果高置信度] 考虑回滚到 [提交 sha]
2. [如果中] 调查特定变更
3. [如果低] 查看基础设施、依赖项或外部因素
应避免的反模式
- ❌ 假设最新部署总是原因 - 仔细检查时间线
- ❌ 忽略间接变更 - 配置文件、依赖项可能导致问题
- ❌ 错过多仓库部署 - 检查所有已部署的服务
- ❌ 忘记功能标志 - 部署可能启用休眠代码
- ❌ 跳过CI失败 - “成功”部署可能跳过测试