@elvis1513/auto-coding-skill 1.0.1 → 1.0.2
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/README.md +12 -20
- package/cli/assets/skill/SKILL.md +5 -7
- package/cli/assets/skill/data/templates/ENGINEERING.md +16 -25
- package/cli/assets/skill/data/templates/docs/reviews/_TEMPLATE-REVIEW.md +4 -5
- package/cli/assets/skill/data/templates/docs/tasks/summaries/_TEMPLATE-TASK-SUMMARY.md +1 -1
- package/cli/assets/skill/scripts/ap.py +22 -47
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ npm install -g git+https://github.com/elvis1513/auto-coding-skill.git
|
|
|
35
35
|
- Synced reusable workflow improvements from a production project back into this skill.
|
|
36
36
|
- Moved repo-side helper entrypoint to `docs/tools/autopipeline`.
|
|
37
37
|
- Tightened regression matrix rules: rows start as `TODO`, and `PASS` requires real execution evidence.
|
|
38
|
-
- Added Jenkins API verification flow with credentials sourced from `docs/ENGINEERING.md
|
|
38
|
+
- Added Jenkins API verification flow with credentials sourced from `docs/ENGINEERING.md`.
|
|
39
39
|
|
|
40
40
|
## Optimized Standard Flow
|
|
41
41
|
|
|
@@ -53,12 +53,11 @@ npm install -g git+https://github.com/elvis1513/auto-coding-skill.git
|
|
|
53
53
|
3. 开发实现
|
|
54
54
|
- 只修改本次任务必要文件,不做无关重构。
|
|
55
55
|
4. 本地轻量校验
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
- lint / typecheck
|
|
59
|
-
- API 文档检查
|
|
60
|
-
- Jenkinsfile / 脚本语法检查
|
|
56
|
+
- 优先执行一个项目自定义快速门禁命令
|
|
57
|
+
- 若未配置,再执行 quick test / test / build 中最先配置的一项
|
|
61
58
|
- `git diff --check`
|
|
59
|
+
- API 文档检查
|
|
60
|
+
- Jenkins 配置检查
|
|
62
61
|
5. 立即提交推送
|
|
63
62
|
- 本地轻量校验通过后,commit + push,触发 Jenkins。
|
|
64
63
|
6. Jenkins 验证
|
|
@@ -75,7 +74,7 @@ npm install -g git+https://github.com/elvis1513/auto-coding-skill.git
|
|
|
75
74
|
默认不做:
|
|
76
75
|
- 本地 Docker Compose 启动
|
|
77
76
|
- 本地 Docker build
|
|
78
|
-
- 本地完整
|
|
77
|
+
- 本地完整 regression
|
|
79
78
|
- 每个小改动强制 `check-matrix`
|
|
80
79
|
- 每个小改动强制生成 summary
|
|
81
80
|
- 未真实执行就要求 regression matrix 全 `PASS`
|
|
@@ -83,7 +82,7 @@ npm install -g git+https://github.com/elvis1513/auto-coding-skill.git
|
|
|
83
82
|
|
|
84
83
|
按需保留:
|
|
85
84
|
- `runtime-up` / `runtime-down`
|
|
86
|
-
- 本地 health
|
|
85
|
+
- 本地 health
|
|
87
86
|
- `check-matrix`
|
|
88
87
|
- `gen-summary`
|
|
89
88
|
- deployment runbook / deployment record
|
|
@@ -120,9 +119,7 @@ It must be committed to Git. Do not add it to `.gitignore`.
|
|
|
120
119
|
|
|
121
120
|
默认必填:
|
|
122
121
|
- `project.name`
|
|
123
|
-
- `commands.build`
|
|
124
|
-
- `commands.quick_test` 或 `commands.test`
|
|
125
|
-
- `commands.lint` 或 `commands.typecheck`
|
|
122
|
+
- `commands.light_gate` 或 `commands.quick_test` 或 `commands.test` 或 `commands.build`
|
|
126
123
|
- `target_env.name`
|
|
127
124
|
- `target_env.frontend_base_url`
|
|
128
125
|
- `target_env.frontend_username`
|
|
@@ -130,6 +127,8 @@ It must be committed to Git. Do not add it to `.gitignore`.
|
|
|
130
127
|
- `target_env.backend_base_url`
|
|
131
128
|
- `target_env.backend_username`
|
|
132
129
|
- `target_env.backend_password`
|
|
130
|
+
- `target_env.backend_root_username`
|
|
131
|
+
- `target_env.backend_root_password`
|
|
133
132
|
- `target_env.health_base_url`
|
|
134
133
|
- `target_env.health_path`
|
|
135
134
|
- `jenkins.base_url`
|
|
@@ -200,6 +199,7 @@ It must be committed to Git. Do not add it to `.gitignore`.
|
|
|
200
199
|
- How to record:
|
|
201
200
|
- Fill YAML frontmatter once.
|
|
202
201
|
- Keep target env front/backend usernames and passwords, Jenkins UI/API usernames and passwords, commands, docs paths here only.
|
|
202
|
+
- Target environment also includes backend server root username/password.
|
|
203
203
|
- This file is expected to be committed to Git and maintained in plaintext for this workflow.
|
|
204
204
|
- Remaining environment keys are all mandatory; blank values, TODO-like placeholders, and incorrect URL/path formats are treated as blocking errors by `doctor`.
|
|
205
205
|
- Do not duplicate config elsewhere.
|
|
@@ -291,12 +291,6 @@ python3 docs/tools/autopipeline/ap.py commit-push <TASK_ID> \
|
|
|
291
291
|
Available on-demand commands:
|
|
292
292
|
|
|
293
293
|
```bash
|
|
294
|
-
python3 docs/tools/autopipeline/ap.py run build
|
|
295
|
-
python3 docs/tools/autopipeline/ap.py run test
|
|
296
|
-
python3 docs/tools/autopipeline/ap.py run quick_test
|
|
297
|
-
python3 docs/tools/autopipeline/ap.py run lint
|
|
298
|
-
python3 docs/tools/autopipeline/ap.py run typecheck
|
|
299
|
-
python3 docs/tools/autopipeline/ap.py run script_syntax
|
|
300
294
|
python3 docs/tools/autopipeline/ap.py doctor
|
|
301
295
|
python3 docs/tools/autopipeline/ap.py verify-api-docs
|
|
302
296
|
python3 docs/tools/autopipeline/ap.py verify-jenkins
|
|
@@ -306,8 +300,6 @@ python3 docs/tools/autopipeline/ap.py verify-jenkins-build --job-url <job-url> -
|
|
|
306
300
|
python3 docs/tools/autopipeline/ap.py verify-jenkins-build --multibranch-root-job <root-job> --branch-name <branch> --build-number <number>
|
|
307
301
|
python3 docs/tools/autopipeline/ap.py runtime-up
|
|
308
302
|
python3 docs/tools/autopipeline/ap.py wait-health --scope runtime
|
|
309
|
-
python3 docs/tools/autopipeline/ap.py run smoke
|
|
310
|
-
python3 docs/tools/autopipeline/ap.py run regression
|
|
311
303
|
python3 docs/tools/autopipeline/ap.py runtime-down
|
|
312
304
|
python3 docs/tools/autopipeline/ap.py check-matrix
|
|
313
305
|
python3 docs/tools/autopipeline/ap.py gen-summary <TASK_ID>
|
|
@@ -332,7 +324,7 @@ python3 docs/tools/autopipeline/ap.py gen-summary <TASK_ID>
|
|
|
332
324
|
- `doctor`
|
|
333
325
|
- Checks whether the default lightweight workflow is actually configured instead of silently skipping gates.
|
|
334
326
|
- `light-gate`
|
|
335
|
-
- Now
|
|
327
|
+
- Now prefers one curated fast gate command instead of serially running every expensive check.
|
|
336
328
|
- `verify-target`
|
|
337
329
|
- Performs real target-environment verification beyond health checks when you provide key backend/frontend paths.
|
|
338
330
|
- `commit-push --record-closure`
|
|
@@ -77,9 +77,7 @@ Do not hide `docs/ENGINEERING.md` in `.gitignore`.
|
|
|
77
77
|
|
|
78
78
|
Minimum required config for the default flow:
|
|
79
79
|
- `project.name`
|
|
80
|
-
- `commands.build`
|
|
81
|
-
- `commands.quick_test` or `commands.test`
|
|
82
|
-
- `commands.lint` or `commands.typecheck`
|
|
80
|
+
- `commands.light_gate` or `commands.quick_test` or `commands.test` or `commands.build`
|
|
83
81
|
- `target_env.name`
|
|
84
82
|
- `target_env.frontend_base_url`
|
|
85
83
|
- `target_env.frontend_username`
|
|
@@ -87,6 +85,8 @@ Minimum required config for the default flow:
|
|
|
87
85
|
- `target_env.backend_base_url`
|
|
88
86
|
- `target_env.backend_username`
|
|
89
87
|
- `target_env.backend_password`
|
|
88
|
+
- `target_env.backend_root_username`
|
|
89
|
+
- `target_env.backend_root_password`
|
|
90
90
|
- `target_env.health_base_url`
|
|
91
91
|
- `target_env.health_path`
|
|
92
92
|
- `jenkins.base_url`
|
|
@@ -138,8 +138,6 @@ On-demand commands:
|
|
|
138
138
|
```bash
|
|
139
139
|
python3 docs/tools/autopipeline/ap.py runtime-up
|
|
140
140
|
python3 docs/tools/autopipeline/ap.py wait-health --scope runtime
|
|
141
|
-
python3 docs/tools/autopipeline/ap.py run smoke
|
|
142
|
-
python3 docs/tools/autopipeline/ap.py run regression
|
|
143
141
|
python3 docs/tools/autopipeline/ap.py runtime-down
|
|
144
142
|
python3 docs/tools/autopipeline/ap.py check-matrix
|
|
145
143
|
python3 docs/tools/autopipeline/ap.py gen-summary <TASK_ID>
|
|
@@ -147,9 +145,9 @@ python3 docs/tools/autopipeline/ap.py gen-summary <TASK_ID>
|
|
|
147
145
|
|
|
148
146
|
## Quality policy
|
|
149
147
|
|
|
150
|
-
- Default local gate is lightweight
|
|
148
|
+
- Default local gate is lightweight and time-bounded: prefer one curated project command via `commands.light_gate`, then run only diff/API/Jenkins checks.
|
|
151
149
|
- `doctor` should be used early to catch missing or invalid config before the first implementation loop.
|
|
152
|
-
- `light-gate` now fails if
|
|
150
|
+
- `light-gate` now fails if no usable fast gate command is configured.
|
|
153
151
|
- `doctor`, `light-gate`, and `commit-push` all fail when required environment fields are missing, placeholder-like, or syntactically invalid.
|
|
154
152
|
- Do not require local Docker Compose or full local regression for every small change.
|
|
155
153
|
- Jenkins and target environment verification are more valuable than repeated local simulation of deploy-only problems.
|
|
@@ -10,26 +10,17 @@ project:
|
|
|
10
10
|
jenkinsfile: "Jenkinsfile"
|
|
11
11
|
|
|
12
12
|
commands:
|
|
13
|
+
light_gate: ""
|
|
13
14
|
build: ""
|
|
14
15
|
test: ""
|
|
15
16
|
quick_test: ""
|
|
16
17
|
lint: ""
|
|
17
18
|
typecheck: ""
|
|
18
19
|
format: ""
|
|
19
|
-
script_syntax: ""
|
|
20
|
-
diff_check: ""
|
|
21
|
-
docker_build: ""
|
|
22
|
-
compose_up: ""
|
|
23
|
-
compose_down: ""
|
|
24
|
-
smoke: ""
|
|
25
|
-
regression: ""
|
|
26
20
|
|
|
27
21
|
runtime:
|
|
28
22
|
docker_compose_file: ""
|
|
29
23
|
docker_service: ""
|
|
30
|
-
container_name: ""
|
|
31
|
-
image: ""
|
|
32
|
-
app_port: ""
|
|
33
24
|
health_base_url: ""
|
|
34
25
|
health_path: ""
|
|
35
26
|
env_file: ""
|
|
@@ -43,6 +34,8 @@ target_env:
|
|
|
43
34
|
backend_base_url: ""
|
|
44
35
|
backend_username: ""
|
|
45
36
|
backend_password: ""
|
|
37
|
+
backend_root_username: ""
|
|
38
|
+
backend_root_password: ""
|
|
46
39
|
health_base_url: ""
|
|
47
40
|
health_path: ""
|
|
48
41
|
|
|
@@ -79,7 +72,7 @@ docs:
|
|
|
79
72
|
默认原则:
|
|
80
73
|
- 默认不要求本地 Docker Compose 启动。
|
|
81
74
|
- 默认不要求本地 Docker build。
|
|
82
|
-
- 默认不要求本地完整
|
|
75
|
+
- 默认不要求本地完整 regression。
|
|
83
76
|
- 默认不要求每个小改动生成长 summary。
|
|
84
77
|
- 默认不要求 regression matrix 全 PASS。
|
|
85
78
|
- 默认不要求 deployment record。
|
|
@@ -97,21 +90,20 @@ docs:
|
|
|
97
90
|
## 0. 配置填写(必须)
|
|
98
91
|
|
|
99
92
|
先填写 `docs/ENGINEERING.md` frontmatter 中的所有空值。重点包括:
|
|
100
|
-
- `commands
|
|
93
|
+
- `commands.light_gate`:推荐配置一个项目级快速门禁命令,作为默认本地校验入口
|
|
101
94
|
- `target_env.*`:目标环境前端 / 后端地址、用户名、密码,必须全部填写且真实可用
|
|
102
95
|
- `jenkins.*`:Jenkins UI/API 用户名、密码、Job、分支、镜像、部署环境,必须全部填写且真实可用
|
|
103
96
|
|
|
104
97
|
字段说明:
|
|
105
98
|
- `target_env.backend_username` / `target_env.backend_password`:目标环境后台账号
|
|
99
|
+
- `target_env.backend_root_username` / `target_env.backend_root_password`:目标环境后台服务器 root 账号
|
|
106
100
|
- `target_env.frontend_username` / `target_env.frontend_password`:目标环境前端登录账号
|
|
107
101
|
- `jenkins.ui_username` / `jenkins.ui_password`:Jenkins 页面登录账号
|
|
108
102
|
- `jenkins.api_user` / `jenkins.api_password`:Jenkins API 用户名 / 密码
|
|
109
103
|
|
|
110
104
|
默认必填:
|
|
111
105
|
- `project.name`
|
|
112
|
-
- `commands.build`
|
|
113
|
-
- `commands.quick_test` 或 `commands.test`
|
|
114
|
-
- `commands.lint` 或 `commands.typecheck`
|
|
106
|
+
- `commands.light_gate` 或 `commands.quick_test` 或 `commands.test` 或 `commands.build`
|
|
115
107
|
- `target_env.name`
|
|
116
108
|
- `target_env.frontend_base_url`
|
|
117
109
|
- `target_env.frontend_username`
|
|
@@ -119,6 +111,8 @@ docs:
|
|
|
119
111
|
- `target_env.backend_base_url`
|
|
120
112
|
- `target_env.backend_username`
|
|
121
113
|
- `target_env.backend_password`
|
|
114
|
+
- `target_env.backend_root_username`
|
|
115
|
+
- `target_env.backend_root_password`
|
|
122
116
|
- `target_env.health_base_url`
|
|
123
117
|
- `target_env.health_path`
|
|
124
118
|
- `jenkins.ui_username`
|
|
@@ -133,7 +127,7 @@ docs:
|
|
|
133
127
|
|
|
134
128
|
按需填写:
|
|
135
129
|
- `runtime.*`:仅在本地运行诊断时使用
|
|
136
|
-
- `commands.
|
|
130
|
+
- `commands.build` / `commands.test` / `commands.quick_test` / `commands.lint` / `commands.typecheck` / `commands.format`:按项目实际情况保留
|
|
137
131
|
|
|
138
132
|
---
|
|
139
133
|
|
|
@@ -197,13 +191,12 @@ docs:
|
|
|
197
191
|
只修改本次任务必要文件,不做无关重构。
|
|
198
192
|
|
|
199
193
|
4. 本地轻量校验
|
|
200
|
-
|
|
201
|
-
-
|
|
202
|
-
-
|
|
203
|
-
- lint / typecheck
|
|
204
|
-
- API 文档检查
|
|
205
|
-
- Jenkinsfile / 脚本语法检查
|
|
194
|
+
默认只跑最少必要检查:
|
|
195
|
+
- 优先执行 `commands.light_gate`
|
|
196
|
+
- 若未配置,则执行 `quick_test` / `test` / `build` 中最先配置的一项
|
|
206
197
|
- `git diff --check`
|
|
198
|
+
- API 文档检查
|
|
199
|
+
- Jenkins 配置检查
|
|
207
200
|
|
|
208
201
|
5. 立即提交推送
|
|
209
202
|
轻量校验通过后,commit + push,触发 Jenkins。
|
|
@@ -250,8 +243,6 @@ docs:
|
|
|
250
243
|
- `runtime-up`
|
|
251
244
|
- `runtime-down`
|
|
252
245
|
- 本地 health check
|
|
253
|
-
- 本地 `smoke`
|
|
254
|
-
- 本地 `regression`
|
|
255
246
|
- `check-matrix`
|
|
256
247
|
- `gen-summary`
|
|
257
248
|
|
|
@@ -271,7 +262,7 @@ docs:
|
|
|
271
262
|
|
|
272
263
|
说明:
|
|
273
264
|
- `doctor`:检查默认流程必填项和常见配置错误。
|
|
274
|
-
- `light-gate
|
|
265
|
+
- `light-gate`:默认轻量门禁,优先执行项目自定义快速门禁命令。
|
|
275
266
|
- `verify-target`:目标环境健康检查 + 按需关键 API / 页面验证。
|
|
276
267
|
- `record-closure`:默认轻量闭环记录。
|
|
277
268
|
- `check-matrix`、`gen-summary`、`runtime-up/down`:保留为按需工具。
|
|
@@ -3,18 +3,17 @@
|
|
|
3
3
|
> 仅在任务需要独立 review 记录时使用;不是每个小改动的默认强制文档。
|
|
4
4
|
|
|
5
5
|
## 1. 静态分析结果
|
|
6
|
-
- Command:
|
|
6
|
+
- Command:light_gate / diff_check / verify_api_docs / verify_jenkins
|
|
7
7
|
- Summary:
|
|
8
8
|
- Issues:
|
|
9
9
|
|
|
10
10
|
## 2. 本地轻量校验
|
|
11
|
-
- build:
|
|
12
|
-
- test or quick_test:
|
|
11
|
+
- light_gate or quick_test/test/build:
|
|
13
12
|
- api docs:
|
|
14
|
-
-
|
|
13
|
+
- jenkins:
|
|
15
14
|
|
|
16
15
|
## 3. 按需本地运行验证(如果有)
|
|
17
|
-
- runtime-up / health
|
|
16
|
+
- runtime-up / health:
|
|
18
17
|
|
|
19
18
|
## 4. Jenkins 与目标环境
|
|
20
19
|
- Jenkins readiness:
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
- 兼容性影响:
|
|
20
20
|
|
|
21
21
|
## 3. 质量证据
|
|
22
|
-
- 本地轻量校验:
|
|
22
|
+
- 本地轻量校验:light_gate or quick_test/test/build / api docs / jenkins / diff-check
|
|
23
23
|
- Jenkins Build:
|
|
24
24
|
- 目标环境验证:
|
|
25
25
|
- 闭环记录:`docs/tasks/closure-log.md`
|
|
@@ -454,7 +454,7 @@ def cmd_gen_summary(args: argparse.Namespace) -> None:
|
|
|
454
454
|
- 变更记录位置:`{api_change_log}`
|
|
455
455
|
|
|
456
456
|
## 4. 质量证据
|
|
457
|
-
- 本地轻量校验:
|
|
457
|
+
- 本地轻量校验:light_gate or quick_test/test/build / api docs / jenkins / diff-check — TODO
|
|
458
458
|
- Jenkins Build:TODO
|
|
459
459
|
- 目标环境验证:TODO
|
|
460
460
|
- 闭环记录:TODO
|
|
@@ -572,14 +572,8 @@ def _require_explicit_field(missing: List[str], field: str, value: object) -> No
|
|
|
572
572
|
|
|
573
573
|
|
|
574
574
|
def _run_git_diff_check(repo: Path, cfg: dict) -> None:
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
if configured:
|
|
578
|
-
print(f"[diff-check] {configured}")
|
|
579
|
-
run_shell(configured, cwd=repo)
|
|
580
|
-
else:
|
|
581
|
-
print("[diff-check] git diff --check")
|
|
582
|
-
run(["git", "diff", "--check"], cwd=repo)
|
|
575
|
+
print("[diff-check] git diff --check")
|
|
576
|
+
run(["git", "diff", "--check"], cwd=repo)
|
|
583
577
|
print("[diff-check] OK")
|
|
584
578
|
|
|
585
579
|
|
|
@@ -613,38 +607,20 @@ def cmd_light_gate(args: argparse.Namespace) -> None:
|
|
|
613
607
|
executed: List[str] = []
|
|
614
608
|
missing: List[str] = []
|
|
615
609
|
|
|
616
|
-
if
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
executed.append("build")
|
|
621
|
-
|
|
622
|
-
if str(commands.get("quick_test") or "").strip():
|
|
610
|
+
if str(commands.get("light_gate") or "").strip():
|
|
611
|
+
_run_configured_command(repo, cfg, "light_gate")
|
|
612
|
+
executed.append("light_gate")
|
|
613
|
+
elif str(commands.get("quick_test") or "").strip():
|
|
623
614
|
_run_configured_command(repo, cfg, "quick_test")
|
|
624
615
|
executed.append("quick_test")
|
|
625
616
|
elif str(commands.get("test") or "").strip():
|
|
626
617
|
_run_configured_command(repo, cfg, "test")
|
|
627
618
|
executed.append("test")
|
|
619
|
+
elif str(commands.get("build") or "").strip():
|
|
620
|
+
_run_configured_command(repo, cfg, "build")
|
|
621
|
+
executed.append("build")
|
|
628
622
|
else:
|
|
629
|
-
missing.append("commands.quick_test or commands.test")
|
|
630
|
-
|
|
631
|
-
static_executed = False
|
|
632
|
-
if str(commands.get("lint") or "").strip():
|
|
633
|
-
_run_configured_command(repo, cfg, "lint")
|
|
634
|
-
executed.append("lint")
|
|
635
|
-
static_executed = True
|
|
636
|
-
|
|
637
|
-
if str(commands.get("typecheck") or "").strip():
|
|
638
|
-
_run_configured_command(repo, cfg, "typecheck")
|
|
639
|
-
executed.append("typecheck")
|
|
640
|
-
static_executed = True
|
|
641
|
-
|
|
642
|
-
if not static_executed:
|
|
643
|
-
missing.append("commands.lint or commands.typecheck")
|
|
644
|
-
|
|
645
|
-
if str(commands.get("script_syntax") or "").strip():
|
|
646
|
-
_run_configured_command(repo, cfg, "script_syntax")
|
|
647
|
-
executed.append("script_syntax")
|
|
623
|
+
missing.append("commands.light_gate or commands.quick_test or commands.test or commands.build")
|
|
648
624
|
|
|
649
625
|
if missing:
|
|
650
626
|
raise APError(
|
|
@@ -664,8 +640,6 @@ def cmd_runtime_up(args: argparse.Namespace) -> None:
|
|
|
664
640
|
repo = Path(args.repo).resolve()
|
|
665
641
|
cfg = _load_cfg(repo)
|
|
666
642
|
runtime_cfg = (cfg.get("runtime") or {})
|
|
667
|
-
if _run_configured_command(repo, cfg, "compose_up"):
|
|
668
|
-
return
|
|
669
643
|
compose_args = _compose_base_args(runtime_cfg) + ["up", "-d"]
|
|
670
644
|
docker_service = str(runtime_cfg.get("docker_service") or "").strip()
|
|
671
645
|
if docker_service:
|
|
@@ -679,8 +653,6 @@ def cmd_runtime_down(args: argparse.Namespace) -> None:
|
|
|
679
653
|
repo = Path(args.repo).resolve()
|
|
680
654
|
cfg = _load_cfg(repo)
|
|
681
655
|
runtime_cfg = (cfg.get("runtime") or {})
|
|
682
|
-
if _run_configured_command(repo, cfg, "compose_down"):
|
|
683
|
-
return
|
|
684
656
|
compose_args = _compose_base_args(runtime_cfg) + ["down", "--remove-orphans"]
|
|
685
657
|
print(f"[runtime-down] {' '.join(compose_args)}")
|
|
686
658
|
run(compose_args, cwd=repo)
|
|
@@ -811,12 +783,13 @@ def cmd_doctor(args: argparse.Namespace) -> None:
|
|
|
811
783
|
|
|
812
784
|
if not str(project_cfg.get("name") or "").strip():
|
|
813
785
|
missing.append("project.name")
|
|
814
|
-
if not
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
786
|
+
if not (
|
|
787
|
+
str(commands.get("light_gate") or "").strip()
|
|
788
|
+
or str(commands.get("quick_test") or "").strip()
|
|
789
|
+
or str(commands.get("test") or "").strip()
|
|
790
|
+
or str(commands.get("build") or "").strip()
|
|
791
|
+
):
|
|
792
|
+
missing.append("commands.light_gate or commands.quick_test or commands.test or commands.build")
|
|
820
793
|
_require_explicit_field(missing, "target_env.name", target_cfg.get("name"))
|
|
821
794
|
_require_explicit_field(missing, "target_env.frontend_base_url", target_cfg.get("frontend_base_url"))
|
|
822
795
|
_require_explicit_field(missing, "target_env.frontend_username", target_cfg.get("frontend_username"))
|
|
@@ -824,6 +797,8 @@ def cmd_doctor(args: argparse.Namespace) -> None:
|
|
|
824
797
|
_require_explicit_field(missing, "target_env.backend_base_url", target_cfg.get("backend_base_url"))
|
|
825
798
|
_require_explicit_field(missing, "target_env.backend_username", target_cfg.get("backend_username"))
|
|
826
799
|
_require_explicit_field(missing, "target_env.backend_password", target_cfg.get("backend_password"))
|
|
800
|
+
_require_explicit_field(missing, "target_env.backend_root_username", target_cfg.get("backend_root_username"))
|
|
801
|
+
_require_explicit_field(missing, "target_env.backend_root_password", target_cfg.get("backend_root_password"))
|
|
827
802
|
_require_explicit_field(missing, "target_env.health_base_url", target_cfg.get("health_base_url"))
|
|
828
803
|
_require_explicit_field(missing, "target_env.health_path", target_cfg.get("health_path"))
|
|
829
804
|
|
|
@@ -856,8 +831,8 @@ def cmd_doctor(args: argparse.Namespace) -> None:
|
|
|
856
831
|
_validate_url_field(warnings, "jenkins.job_url", jenkins_cfg.get("job_url"))
|
|
857
832
|
|
|
858
833
|
runtime_enabled = any(str(runtime_cfg.get(key) or "").strip() for key in ["docker_compose_file", "docker_service", "health_base_url", "health_path"])
|
|
859
|
-
if runtime_enabled and not
|
|
860
|
-
warnings.append("runtime config is partially enabled but
|
|
834
|
+
if runtime_enabled and not str(runtime_cfg.get("docker_compose_file") or "").strip():
|
|
835
|
+
warnings.append("runtime config is partially enabled but runtime.docker_compose_file is missing")
|
|
861
836
|
|
|
862
837
|
try:
|
|
863
838
|
timeout_s = int(jenkins_cfg.get("deploy_timeout_sec") or 0)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elvis1513/auto-coding-skill",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "CLI installer for auto-coding-skill (Claude Code + Codex CLI) with Go fullstack + Jenkins workflow support.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"LICENSE"
|
|
14
14
|
],
|
|
15
15
|
"scripts": {
|
|
16
|
-
"test": "node -c cli/src/index.js",
|
|
16
|
+
"test": "node -c cli/src/index.js && python3 -m py_compile src/auto-coding-skill/scripts/ap.py src/auto-coding-skill/scripts/core.py src/auto-coding-skill/scripts/http_checks.py cli/assets/skill/scripts/ap.py cli/assets/skill/scripts/core.py cli/assets/skill/scripts/http_checks.py && find src cli -type d -name '__pycache__' -prune -exec rm -rf {} +",
|
|
17
17
|
"sync-assets": "node cli/src/sync-assets.js",
|
|
18
18
|
"release:check": "npm run sync-assets && npm run test && npm pack --dry-run"
|
|
19
19
|
},
|