ai-project-manage-cli 6.0.81 → 6.0.82
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/dist/index.js
CHANGED
|
@@ -4265,6 +4265,42 @@ function posixBasename(p) {
|
|
|
4265
4265
|
return idx >= 0 ? normalized.slice(idx + 1) : normalized;
|
|
4266
4266
|
}
|
|
4267
4267
|
|
|
4268
|
+
// src/commands/deploy/internal/deploy-hints.ts
|
|
4269
|
+
function formatDeployNotConfiguredLines(env, deployCommands) {
|
|
4270
|
+
const configuredEnvs = Object.keys(deployCommands).filter(
|
|
4271
|
+
(key) => deployCommands[key]?.trim()
|
|
4272
|
+
);
|
|
4273
|
+
if (configuredEnvs.length > 0) {
|
|
4274
|
+
return [
|
|
4275
|
+
`[apm] \u65E0\u6CD5\u6267\u884C\u90E8\u7F72\uFF1Aapm.config.json \u4E2D\u672A\u914D\u7F6E deploy.${env}`,
|
|
4276
|
+
`[apm] \u5F53\u524D\u5DF2\u914D\u7F6E\u7684\u73AF\u5883: ${configuredEnvs.join(", ")}`
|
|
4277
|
+
];
|
|
4278
|
+
}
|
|
4279
|
+
return [
|
|
4280
|
+
"[apm] \u65E0\u6CD5\u6267\u884C\u90E8\u7F72\uFF1A\u5F53\u524D\u9879\u76EE\u672A\u914D\u7F6E\u81EA\u52A8\u5316\u90E8\u7F72\uFF08apm.config.json \u4E2D\u65E0 deploy \u6BB5\uFF09",
|
|
4281
|
+
"[apm] \u90E8\u5206\u9879\u76EE\u4E0D\u652F\u6301\u6216\u672A\u542F\u7528\u81EA\u52A8\u5316\u90E8\u7F72\uFF0C\u5C5E\u6B63\u5E38\u60C5\u51B5\uFF0C\u53EF\u8DF3\u8FC7\u90E8\u7F72"
|
|
4282
|
+
];
|
|
4283
|
+
}
|
|
4284
|
+
function formatWisdomFrontendDeployNotConfiguredLines(env, packageJsonPath) {
|
|
4285
|
+
return [
|
|
4286
|
+
`[apm] \u65E0\u6CD5\u6267\u884C\u90E8\u7F72\uFF1A${packageJsonPath} \u4E2D\u672A\u627E\u5230 deploy:${env} \u811A\u672C`,
|
|
4287
|
+
"[apm] \u82E5\u672C\u9879\u76EE\u4E0D\u652F\u6301\u81EA\u52A8\u5316\u90E8\u7F72\uFF0C\u5C5E\u6B63\u5E38\u60C5\u51B5\uFF0C\u53EF\u8DF3\u8FC7\u90E8\u7F72"
|
|
4288
|
+
];
|
|
4289
|
+
}
|
|
4290
|
+
function printDeployNotConfiguredHint(env, deployCommands) {
|
|
4291
|
+
for (const line of formatDeployNotConfiguredLines(env, deployCommands)) {
|
|
4292
|
+
console.error(line);
|
|
4293
|
+
}
|
|
4294
|
+
}
|
|
4295
|
+
function printWisdomFrontendDeployNotConfiguredHint(env, packageJsonPath) {
|
|
4296
|
+
for (const line of formatWisdomFrontendDeployNotConfiguredLines(
|
|
4297
|
+
env,
|
|
4298
|
+
packageJsonPath
|
|
4299
|
+
)) {
|
|
4300
|
+
console.error(line);
|
|
4301
|
+
}
|
|
4302
|
+
}
|
|
4303
|
+
|
|
4268
4304
|
// src/commands/deploy/internal/wisdom-auto-deploy.ts
|
|
4269
4305
|
import { existsSync as existsSync17, readFileSync as readFileSync14 } from "node:fs";
|
|
4270
4306
|
import path3 from "node:path";
|
|
@@ -5089,8 +5125,9 @@ async function runWisdomAutoDeploy(options) {
|
|
|
5089
5125
|
if (projectType === "frontend") {
|
|
5090
5126
|
const deployCmd = resolveFrontendDeployCommand(options.env, cwd);
|
|
5091
5127
|
if (!deployCmd) {
|
|
5092
|
-
|
|
5093
|
-
|
|
5128
|
+
printWisdomFrontendDeployNotConfiguredHint(
|
|
5129
|
+
options.env,
|
|
5130
|
+
path3.join(cwd, "package.json")
|
|
5094
5131
|
);
|
|
5095
5132
|
process.exit(1);
|
|
5096
5133
|
}
|
|
@@ -5142,12 +5179,7 @@ function registerDeployMainCommand(program) {
|
|
|
5142
5179
|
const deployCommands = cfg.deploy ?? {};
|
|
5143
5180
|
const command = deployCommands[env]?.trim();
|
|
5144
5181
|
if (!command) {
|
|
5145
|
-
|
|
5146
|
-
console.error(
|
|
5147
|
-
keys.length > 0 ? `apm.config.json \u4E2D\u672A\u914D\u7F6E deploy.${env}\uFF0C\u53EF\u7528\u73AF\u5883: ${keys.join(
|
|
5148
|
-
", "
|
|
5149
|
-
)}` : `apm.config.json \u4E2D\u672A\u914D\u7F6E deploy \u6BB5`
|
|
5150
|
-
);
|
|
5182
|
+
printDeployNotConfiguredHint(env, deployCommands);
|
|
5151
5183
|
process.exit(1);
|
|
5152
5184
|
}
|
|
5153
5185
|
runShellCommand3(command, cwd);
|
package/package.json
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
# apm-deploy:自动化部署
|
|
2
|
+
|
|
1
3
|
## 工作流程
|
|
2
4
|
|
|
3
|
-
在项目根目录执行 `apm deploy
|
|
5
|
+
在项目根目录执行 `apm deploy <环境名称>`,**以命令执行结果为准**:
|
|
6
|
+
|
|
7
|
+
- **成功**:部署完成,在回信中说明测试环境地址或部署结果。
|
|
8
|
+
- **失败且输出含「未配置自动化部署」或「可跳过部署」**:本项目不支持自动化部署,属正常情况;放弃部署,在回信说明已跳过即可,无需修复配置或重试。
|
|
9
|
+
- **其他失败**:按输出排查并修复后重试。
|
|
4
10
|
|
|
5
11
|
## 示例
|
|
6
12
|
|
|
7
13
|
1. 部署测试环境:`apm deploy test`
|
|
8
|
-
2.
|
|
14
|
+
2. 部署正式环境:`apm deploy online`
|
|
@@ -86,7 +86,7 @@ ALTER TABLE inspection_class ADD COLUMN is_project_add VARCHAR(1) DEFAULT '0';
|
|
|
86
86
|
开发完成的定义是以下三项**全部满足**,缺一不可:
|
|
87
87
|
|
|
88
88
|
1. **构建通过**:执行本仓库的构建/检查命令(见 AGENTS.md 或部署文档),失败必须修复后重试。
|
|
89
|
-
2. **发布测试环境**:**Read** `.apm/skills/apm-deploy/SKILL.md`
|
|
89
|
+
2. **发布测试环境**:**Read** `.apm/skills/apm-deploy/SKILL.md` 并按其流程执行 `apm deploy`(以命令结果判断是否跳过);**后端**涉及 SQL 变更时,须在回复中引用 `docs/SQL.md`,并写明待执行的 SQL 文件名或执行顺序。
|
|
90
90
|
3. **白名单对账**:在回复中逐文件列出本次改动与计划白名单的对应关系。
|
|
91
91
|
|
|
92
92
|
**注意:不做联调。** 前后端各自按 `API.md` 交付,接口对不上属于契约或实现问题,由 diff 评审与人工验收暴露后打回修复;禁止自行发起「联调」「接口实测」类的开放式动作。
|