@weotro/dx 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -5,22 +5,9 @@ description: 仅在用户显式调用 $cc-ship-issue-pr、/cc-ship-issue-pr 或
|
|
|
5
5
|
|
|
6
6
|
# CC Ship Issue PR
|
|
7
7
|
|
|
8
|
-
Claude Code
|
|
8
|
+
Claude Code 入口:主进程执行轻改动,Codex 承接重改动的方案讨论、实现与独立审查。
|
|
9
9
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
任何文件检查、Git/GitHub 操作或共享流程加载之前执行:
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
if [[ -z "${CLAUDECODE:-}" ]]; then
|
|
16
|
-
echo "cc-ship-issue-pr 仅允许 Claude Code 调用;当前运行时不是 Claude Code,已退出。"
|
|
17
|
-
exit 64
|
|
18
|
-
fi
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
门禁失败后立即结束。门禁通过的完成标准是 `CLAUDECODE` 非空。
|
|
22
|
-
|
|
23
|
-
## 步骤二:加载共享流程
|
|
10
|
+
## 步骤一:加载共享流程
|
|
24
11
|
|
|
25
12
|
```bash
|
|
26
13
|
AGENTS_ROOT="${AGENTS_HOME:-$HOME/.agents}"
|
|
@@ -7,7 +7,7 @@ description: 仅在用户显式调用 $git-release 或明确要求使用 git-rel
|
|
|
7
7
|
|
|
8
8
|
## 目标
|
|
9
9
|
|
|
10
|
-
在 `release/vX.Y.Z` 或 `release/vX.Y.Z-<prerelease>.N`
|
|
10
|
+
在 `release/vX.Y.Z` 或 `release/vX.Y.Z-<prerelease>.N` 分支上,完成发布前检查、GitHub Release 创建和发布后运维回访 Issue 建立;若当前不在 release 分支,则先从最新 `main` 自动创建目标 release 分支。
|
|
11
11
|
|
|
12
12
|
## 执行原则
|
|
13
13
|
|
|
@@ -15,6 +15,8 @@ description: 仅在用户显式调用 $git-release 或明确要求使用 git-rel
|
|
|
15
15
|
- 严格执行前置校验,任何硬性条件不满足时立即终止。
|
|
16
16
|
- 发行说明必须结构化、可读、可追溯。
|
|
17
17
|
- 发布完成必须留下一个可追踪的部署后回访 Issue;终端里临时打印 checklist 不算完成。
|
|
18
|
+
- 本技能只编写回访 Issue,不执行生产验证。不得登录生产服务器、访问生产数据库、调用生产只读接口、查询生产监控或尝试取得生产凭据。
|
|
19
|
+
- GitHub Release 创建成功不代表已经部署。Issue 中部署、迁移、服务、数据和业务验收项默认全部未勾选,留给运维或后续回访 agent 执行并补充证据。
|
|
18
20
|
- 命令默认在仓库根目录执行。
|
|
19
21
|
- 若能从当前 release 分支或自动建分支流程唯一推断出合法版本号,直接使用该版本继续发布,不要询问用户确认。
|
|
20
22
|
|
|
@@ -159,17 +161,14 @@ EOF
|
|
|
159
161
|
|
|
160
162
|
4. 读回 Release,确认 tag、标题、正文和 URL 正确:`gh release view v<VERSION> --json tagName,name,body,url,isDraft,isPrerelease`。
|
|
161
163
|
|
|
162
|
-
###
|
|
164
|
+
### 六、创建发布后运维回访 Issue
|
|
163
165
|
|
|
164
166
|
1. 完整读取 [发布后回访契约](references/post-release-follow-up.md)。
|
|
165
|
-
2.
|
|
166
|
-
3.
|
|
167
|
-
4.
|
|
168
|
-
5.
|
|
169
|
-
6.
|
|
170
|
-
7. 使用 `gh issue view` 读回 Issue,确认没有占位符、每个生产目标和本次发布影响面都有对应检查项,并输出 Issue URL。
|
|
171
|
-
|
|
172
|
-
GitHub Release 已创建但无法登录生产服务器、实际版本不匹配、必需运维脚本未执行或数据不符合预期时,仍然创建回访 Issue,把状态标为阻塞并立即向用户报告证据、影响、建议动作和重新验证项;不得静默修复或用“Release 已创建”掩盖生产问题。
|
|
167
|
+
2. 只读取仓库内的部署配置、运维文档、发行说明、PR、迁移和 ops manifest,确定预期环境、品牌、target、服务、数据库、脚本与用户可观察变化。不得通过 SSH、生产域名、数据库、监控平台、云平台 API 或私有环境配置验证当前生产状态。
|
|
168
|
+
3. 自动创建一个发布后回访 Issue。Issue 必须覆盖:部署前门禁、发布与服务器版本一致性、服务健康、迁移与运维脚本、数据结果、配置、可观测性、本次变更特有验收、回滚准备和延迟观察窗口。
|
|
169
|
+
4. 部署与生产验证状态写为“待运维执行”。所有需要部署后取证的 checklist 保持未勾选,并写清执行对象、预期结果和应附的脱敏证据;不得因为 Release 已创建或 CI 状态正常而代替勾选。
|
|
170
|
+
5. checklist 应明确要求运维或后续回访 agent 按仓库配置登录每台相关生产服务器,核对实际版本、进程或容器、health/readiness、日志、worker/cron、资源、迁移、配置和数据结果。本技能当前调用不执行这些检查。
|
|
171
|
+
6. 使用 `gh issue view` 读回 Issue,确认没有占位符、每个生产目标和本次发布影响面都有对应未勾选检查项,并输出 Issue URL。
|
|
173
172
|
|
|
174
173
|
## 终止条件
|
|
175
174
|
|
|
@@ -205,6 +204,6 @@ GitHub Release 已创建但无法登录生产服务器、实际版本不匹配
|
|
|
205
204
|
- 分支名
|
|
206
205
|
- tag 推送状态
|
|
207
206
|
- Release URL
|
|
208
|
-
-
|
|
207
|
+
- 预期部署环境、品牌与 target
|
|
209
208
|
- 发布后回访 Issue URL
|
|
210
|
-
-
|
|
209
|
+
- 待运维执行与待观察项目数量
|
|
@@ -1,94 +1,118 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 发布后运维回访 Issue 契约
|
|
2
2
|
|
|
3
|
-
本文件只在 GitHub Release
|
|
3
|
+
本文件只在 GitHub Release 创建并读回成功后使用。目标是生成一张可交给运维或后续回访 agent 执行的部署与验证 checklist,不是在当前 `git-release` 调用中验证生产环境。
|
|
4
|
+
|
|
5
|
+
## 职责边界
|
|
6
|
+
|
|
7
|
+
当前 `git-release` agent 只做以下工作:
|
|
8
|
+
|
|
9
|
+
- 从仓库内的部署配置、运维文档、发行说明、提交、PR、迁移和 ops manifest 建立发布影响面;
|
|
10
|
+
- 创建并读回发布后回访 Issue;
|
|
11
|
+
- 把每个部署与验证动作写成可执行、可取证的未勾选检查项。
|
|
12
|
+
|
|
13
|
+
当前调用不得连接或探测生产环境,包括 SSH、生产数据库、生产域名或 health 接口、监控平台、云平台部署 API、服务器日志和私有环境 profile。不得为了填写 Issue 尝试取得密钥、token、主机权限或数据库权限。
|
|
14
|
+
|
|
15
|
+
GitHub Release、tag、CI 状态或部署工作流的存在都不代表已经部署。Issue 的初始状态统一写为“待运维执行”,所有部署后检查项保持未勾选。
|
|
4
16
|
|
|
5
17
|
## 完成边界
|
|
6
18
|
|
|
7
19
|
`git-release` 本次调用完成的最低条件是:
|
|
8
20
|
|
|
9
21
|
- Release 已读回确认;
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
- 发布后回访 Issue 已创建并读回;
|
|
22
|
+
- 已从仓库内真源确定预期环境、品牌、target、服务、数据库与运维脚本,无法确定的内容明确列为待运维补充;
|
|
23
|
+
- 回访 Issue 已创建并读回;
|
|
13
24
|
- 本次发布涉及的每个环境、品牌、target、迁移、配置和用户可观察变化都有检查项;
|
|
14
|
-
-
|
|
25
|
+
- 每个检查项写明执行对象、预期结果和应附的脱敏证据;
|
|
26
|
+
- 没有把未经生产取证的项目标成已完成,也没有声称实际生产版本或健康状态。
|
|
27
|
+
|
|
28
|
+
回访 Issue 不要求在当前调用中关闭。运维或后续回访 agent 应在部署后更新同一个 Issue,逐项补证据并勾选。
|
|
15
29
|
|
|
16
|
-
|
|
30
|
+
## 从仓库建立影响面
|
|
17
31
|
|
|
18
|
-
|
|
32
|
+
只检查本地仓库真源,包括部署脚本、inventory、`dx/config/commands.json`、`dx/release/`、systemd/container 配置、runbook、迁移目录和 ops manifest。确定:
|
|
19
33
|
|
|
20
|
-
|
|
34
|
+
- 预期生产环境、品牌、target、服务和前端项目;
|
|
35
|
+
- 预期运行方式,例如 systemd、Docker、Kubernetes、PM2 或 serverless;
|
|
36
|
+
- 部署后可核对版本/commit 的文件、镜像标签、release 目录或运行参数;
|
|
37
|
+
- 数据库、队列、worker、cron、缓存和第三方连接需要验证的范围;
|
|
38
|
+
- 本次发布要求执行或确认的迁移、seed、回填、缓存刷新、配置生成和运维脚本;
|
|
39
|
+
- 发行说明中每个用户可观察变化对应的 smoke check。
|
|
21
40
|
|
|
22
|
-
|
|
23
|
-
- 服务由 systemd、Docker、Kubernetes、PM2、serverless 或其他方式运行;
|
|
24
|
-
- 服务器上可验证版本/commit 的文件、环境变量、镜像标签、健康接口或运行参数;
|
|
25
|
-
- 数据库、队列、worker、cron、缓存和第三方连接的只读检查入口;
|
|
26
|
-
- 本次发布要求人工执行的迁移、回填、缓存刷新、配置生成或运维脚本。
|
|
41
|
+
仓库未提供生产坐标或验证入口时,在 Issue 中写“待运维按私有配置补充”,不要猜测主机、域名、数据库或历史地址。
|
|
27
42
|
|
|
28
|
-
|
|
43
|
+
## Checklist 编写规则
|
|
29
44
|
|
|
30
|
-
|
|
45
|
+
每个检查项都应包含:
|
|
31
46
|
|
|
32
|
-
|
|
47
|
+
- **执行对象**:环境、品牌、target、服务、数据库或业务路径;
|
|
48
|
+
- **预期结果**:可判定通过或失败的状态;
|
|
49
|
+
- **证据要求**:脱敏命令摘要、版本/commit、迁移表结果、日志时间窗、监控链接或可观察行为;
|
|
50
|
+
- **执行时机**:部署前、部署后立即、观察窗口结束后或下一轮 cron 后。
|
|
33
51
|
|
|
34
|
-
|
|
52
|
+
不要预填生产结果。Release/tag 已创建等 GitHub 事实可写在“发布信息”中,但不能代替部署与生产检查项。
|
|
35
53
|
|
|
36
|
-
|
|
54
|
+
### 部署前门禁
|
|
55
|
+
|
|
56
|
+
- 不可变 tag/commit 与发布计划一致;
|
|
57
|
+
- 品牌 readiness、环境配置和部署矩阵通过;
|
|
58
|
+
- 新增或变更的环境变量、secret、feature flag 和第三方配置已准备;
|
|
59
|
+
- 发布窗口、执行人、观察人、分批策略与回滚入口已记录。
|
|
37
60
|
|
|
38
61
|
### 发布与制品一致性
|
|
39
62
|
|
|
40
|
-
- tag、Release
|
|
41
|
-
-
|
|
42
|
-
- 所有预期生产主机、品牌和 target
|
|
43
|
-
- Release
|
|
63
|
+
- tag、Release、版本文件和实际运行 commit 指向同一版本;
|
|
64
|
+
- 服务器制品、镜像、release 目录或前端 deployment 使用正确版本与 commit;
|
|
65
|
+
- 所有预期生产主机、品牌和 target 均已发布,没有漏发或版本漂移;
|
|
66
|
+
- Release 的 draft/prerelease 状态符合版本类型。
|
|
44
67
|
|
|
45
68
|
### 服务器与服务状态
|
|
46
69
|
|
|
47
|
-
-
|
|
70
|
+
- 运维或后续回访 agent 按仓库配置登录每台相关生产服务器;
|
|
71
|
+
- 目标进程、容器、pod 或 function 正常运行,启动时间与本次部署一致;
|
|
48
72
|
- health/readiness、端口、反向代理和服务间连接正常;
|
|
49
73
|
- worker、cron、队列消费者和后台作业运行在目标版本;
|
|
50
|
-
- 最近日志没有启动失败、error、panic
|
|
51
|
-
- CPU
|
|
74
|
+
- 最近日志没有启动失败、error、panic、持续 timeout、权限错误或重复重启;
|
|
75
|
+
- CPU、内存、磁盘、连接数等没有明显异常。
|
|
52
76
|
|
|
53
77
|
### 运行时健康与可观测性
|
|
54
78
|
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
79
|
+
- 发布后错误率、延迟、5xx、告警和日志异常没有明显回归;
|
|
80
|
+
- 队列积压、定时任务、事件消费、webhook 和后台作业正常;
|
|
81
|
+
- 域名、TLS、静态资源、CDN、缓存版本和 source map 符合预期;
|
|
82
|
+
- 设置适合本次变更的观察窗口和最早复查时间。
|
|
59
83
|
|
|
60
84
|
### 数据、配置与兼容性
|
|
61
85
|
|
|
62
86
|
- 本次迁移已应用到正确数据库,schema 与应用版本兼容;
|
|
63
|
-
-
|
|
64
|
-
- 公共 API、DTO
|
|
65
|
-
-
|
|
66
|
-
-
|
|
87
|
+
- 新增或变更的运行时配置已生效,敏感值只记录存在性、长度或指纹;
|
|
88
|
+
- 公共 API、DTO、事件、数据库和客户端兼容性得到验证;
|
|
89
|
+
- 使用有边界的只读查询核对关键总数、不变量、状态分布和抽样结果;
|
|
90
|
+
- 数据修复或回填记录预期数量、实际数量、失败项和幂等/重跑状态。
|
|
67
91
|
|
|
68
92
|
### 运维脚本执行状态
|
|
69
93
|
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
94
|
+
- 从 PR、迁移、release note、runbook 和 ops manifest 列出全部人工脚本;
|
|
95
|
+
- 每个脚本记录名称/版本、目标主机或数据库、预期效果和完成标记;
|
|
96
|
+
- 要求通过迁移表、任务表、审计日志、marker、状态子命令或数据结果判断 `已执行 / 未执行 / 无法确认 / 不适用`;
|
|
97
|
+
- “文件存在”或口头确认不算执行证据;
|
|
98
|
+
- 生产写脚本、迁移、回填、重启或重新部署由运维按授权流程执行,不由 `git-release` 当前调用执行。
|
|
75
99
|
|
|
76
100
|
### 用户与业务路径
|
|
77
101
|
|
|
78
102
|
- 为发行说明中的每个用户可观察变化生成对应 smoke check;
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
103
|
+
- 覆盖本次受影响的登录/鉴权、核心读写、支付或其他高风险路径;
|
|
104
|
+
- 前端、管理端、移动端和多品牌分别验证,不能用一个端的通过代表全部端;
|
|
105
|
+
- 修复项复现旧失败条件并验证新行为,新增项验证成功路径和关键错误路径。
|
|
82
106
|
|
|
83
107
|
### 回滚与延迟观察
|
|
84
108
|
|
|
85
109
|
- 记录上一稳定版本、回滚命令或恢复入口,以及迁移是否可逆;
|
|
86
|
-
-
|
|
87
|
-
-
|
|
110
|
+
- 对错误率、队列积压、定时任务、缓存过期等设置观察窗口;
|
|
111
|
+
- 明确关闭条件:所有必需项完成,阻塞项有结论,发现的问题已修复或拆成关联 Issue。
|
|
88
112
|
|
|
89
113
|
## Issue 结构
|
|
90
114
|
|
|
91
|
-
|
|
115
|
+
创建前读取仓库 Issue 模板和现有 labels,沿用其结构与可用标签。标题使用:
|
|
92
116
|
|
|
93
117
|
```text
|
|
94
118
|
chore(release): 回访 v<VERSION> 部署结果
|
|
@@ -102,17 +126,18 @@ chore(release): 回访 v<VERSION> 部署结果
|
|
|
102
126
|
- 版本:v<VERSION>
|
|
103
127
|
- Release:<URL>
|
|
104
128
|
- Tag commit:<SHA>
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
- 实际运行版本/commit:<逐目标结果>
|
|
108
|
-
- 生产验证时间:<时间与时区>
|
|
109
|
-
- 验证状态:通过 / 阻塞 / 发现异常
|
|
129
|
+
- 预期部署环境/品牌/target:<从仓库配置得出的范围>
|
|
130
|
+
- 当前状态:待运维执行
|
|
110
131
|
|
|
111
132
|
## 部署后检查清单
|
|
112
133
|
|
|
134
|
+
### 部署前门禁
|
|
135
|
+
|
|
136
|
+
- [ ] <执行对象、预期结果、证据要求>
|
|
137
|
+
|
|
113
138
|
### 发布与制品一致性
|
|
114
139
|
|
|
115
|
-
- [ ]
|
|
140
|
+
- [ ] <检查项>
|
|
116
141
|
|
|
117
142
|
### 生产服务器与服务
|
|
118
143
|
|
|
@@ -124,11 +149,11 @@ chore(release): 回访 v<VERSION> 部署结果
|
|
|
124
149
|
|
|
125
150
|
### 数据、配置与兼容性
|
|
126
151
|
|
|
127
|
-
- [ ]
|
|
152
|
+
- [ ] <检查项或“不适用”的判定任务>
|
|
128
153
|
|
|
129
154
|
### 运维脚本
|
|
130
155
|
|
|
131
|
-
- [ ]
|
|
156
|
+
- [ ] <脚本、目标、预期结果与证据要求>
|
|
132
157
|
|
|
133
158
|
### 本次变更验收
|
|
134
159
|
|
|
@@ -136,23 +161,16 @@ chore(release): 回访 v<VERSION> 部署结果
|
|
|
136
161
|
|
|
137
162
|
### 回滚与观察窗口
|
|
138
163
|
|
|
139
|
-
- [ ]
|
|
140
|
-
- [ ]
|
|
164
|
+
- [ ] <回滚入口确认任务>
|
|
165
|
+
- [ ] <观察指标、窗口、最早复查时间和负责人>
|
|
141
166
|
|
|
142
167
|
## 发现与后续
|
|
143
168
|
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
-
|
|
169
|
+
- 当前状态:待运维执行
|
|
170
|
+
- 关联问题:无;发现异常后补充
|
|
171
|
+
- 关闭条件:所有必需检查完成且发现的问题有结论
|
|
147
172
|
```
|
|
148
173
|
|
|
149
174
|
正文通过 heredoc 或临时文件传给 `gh issue create --body-file`,禁止用字面量 `\n` 拼接。创建后用 `gh issue view <id> --json title,body,url,state` 读回。
|
|
150
175
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
- 勾选项必须同时写入证据:脱敏命令与结果摘要、日志位置、只读查询汇总、监控链接或具体可观察结果。
|
|
154
|
-
- “服务器能登录”“进程在运行”“页面能开”不能替代版本、脚本和数据的专项验证。
|
|
155
|
-
- 检查失败时保留未勾选状态,在“发现与后续”记录严重级、时间、主机/服务、证据、影响和建议动作,并立即在当前回复中报告。
|
|
156
|
-
- 发现问题后默认只报告和保全证据,不静默修改生产环境。修复需要生产写操作时等待用户对具体动作授权。
|
|
157
|
-
- 新发现的问题超出本次回访可直接修复的范围时创建关联 Issue;回访 Issue 保持打开,直到该问题有明确处置结果。
|
|
158
|
-
- 不适用项必须写出判定依据;不要为了模板完整保留空占位项。
|
|
176
|
+
读回时确认:没有占位符;每个预期生产目标都有检查项;所有部署后检查项仍未勾选;Issue 没有声称已经登录服务器、部署成功或生产健康。
|
|
@@ -5,26 +5,9 @@ description: 仅在用户显式调用 $oo-ship-issue-pr、/oo-ship-issue-pr 或
|
|
|
5
5
|
|
|
6
6
|
# OO Ship Issue PR
|
|
7
7
|
|
|
8
|
-
Codex
|
|
8
|
+
Codex 入口:主进程执行轻改动,Claude Fable 5 优先承接重改动的方案讨论、实现与独立审查;Fable 额度不足时回退 Claude Opus 5,Claude 通道不可用时改派 fresh Codex subagent,不中断交付链。
|
|
9
9
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
任何文件检查、Git/GitHub 操作或共享流程加载之前执行:
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
if [[ -n "${CLAUDECODE:-}" ]]; then
|
|
16
|
-
echo "oo-ship-issue-pr 仅允许 Codex 调用;检测到 Claude Code 运行时,已退出。"
|
|
17
|
-
exit 64
|
|
18
|
-
fi
|
|
19
|
-
if [[ -z "${CODEX_THREAD_ID:-}" && -z "${CODEX_SESSION_ID:-}" ]]; then
|
|
20
|
-
echo "oo-ship-issue-pr 仅允许 Codex 调用;当前运行时不是 Codex,已退出。"
|
|
21
|
-
exit 64
|
|
22
|
-
fi
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
`CLAUDECODE` 存在时优先拒绝,避免 Codex 启动的 Claude 子进程继承 `CODEX_*` 后误过门禁。门禁通过的完成标准是 `CLAUDECODE` 为空,且至少一个 Codex 身份变量非空。
|
|
26
|
-
|
|
27
|
-
## 步骤二:加载共享流程
|
|
10
|
+
## 步骤一:加载共享流程
|
|
28
11
|
|
|
29
12
|
```bash
|
|
30
13
|
AGENTS_ROOT="${AGENTS_HOME:-$HOME/.agents}"
|