ai-project-manage-cli 8.0.9 → 8.0.12
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.
|
@@ -983,24 +983,18 @@ async function checkoutBaselineBranch(baselineBranch, options = {}) {
|
|
|
983
983
|
const gitRoot = await resolveGitRepoRoot(cwd);
|
|
984
984
|
await ensureGitRepo(gitRoot);
|
|
985
985
|
if (await isWorkingTreeDirty(gitRoot)) {
|
|
986
|
-
throw new Error(
|
|
987
|
-
`[apm] \u5DE5\u4F5C\u533A\u6709\u672A\u63D0\u4EA4\u53D8\u66F4\uFF0C\u65E0\u6CD5\u5207\u6362\u5230\u57FA\u7EBF\u5206\u652F ${baseline}`
|
|
988
|
-
);
|
|
986
|
+
throw new Error(`[apm] \u5DE5\u4F5C\u533A\u6709\u672A\u63D0\u4EA4\u53D8\u66F4\uFF0C\u65E0\u6CD5\u5207\u6362\u5230\u57FA\u7EBF\u5206\u652F ${baseline}`);
|
|
989
987
|
}
|
|
990
988
|
await ensureRemoteBaselineBranch(gitRoot, baseline);
|
|
991
989
|
const current = await getCurrentBranch(gitRoot);
|
|
992
|
-
if (current
|
|
993
|
-
await execGit(gitRoot, ["
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
baseline,
|
|
1001
|
-
`origin/${baseline}`
|
|
1002
|
-
]);
|
|
1003
|
-
console.log(`[apm] \u5DF2\u5207\u6362\u5230\u57FA\u7EBF\u5206\u652F ${baseline}`);
|
|
990
|
+
if (current !== baseline) {
|
|
991
|
+
await execGit(gitRoot, ["checkout", "-B", baseline, `origin/${baseline}`]);
|
|
992
|
+
}
|
|
993
|
+
await execGit(gitRoot, ["reset", "--hard", `origin/${baseline}`]);
|
|
994
|
+
const head = (await execGit(gitRoot, ["rev-parse", "--short", "HEAD"], true)).trim();
|
|
995
|
+
console.log(
|
|
996
|
+
`[apm] \u5DF2\u5207\u6362\u5230\u57FA\u7EBF ${baseline}\uFF0C\u5E76\u5BF9\u9F50 origin/${baseline}\uFF08${head}\uFF09`
|
|
997
|
+
);
|
|
1004
998
|
return baseline;
|
|
1005
999
|
}
|
|
1006
1000
|
|
|
@@ -4003,7 +3997,7 @@ function expectedArtifactPath(target, packageId) {
|
|
|
4003
3997
|
if (target === "frontend") {
|
|
4004
3998
|
return `/data/artifacts/vue/${packageId}/dist.zip`;
|
|
4005
3999
|
}
|
|
4006
|
-
return `/data/artifacts/springboot/${packageId}/
|
|
4000
|
+
return `/data/artifacts/springboot/${packageId}/jars.zip`;
|
|
4007
4001
|
}
|
|
4008
4002
|
async function handleWebIdePackage(cfg, msg, signal) {
|
|
4009
4003
|
const workdir = requireRemoteWorkdir(msg.workdir);
|
|
@@ -4103,7 +4097,7 @@ async function handleWebIdePackage(cfg, msg, signal) {
|
|
|
4103
4097
|
);
|
|
4104
4098
|
if (signal.aborted) throw new Error("\u4EFB\u52A1\u5DF2\u53D6\u6D88");
|
|
4105
4099
|
await runPrepStep(
|
|
4106
|
-
"\u5207\u6362\u57FA\u7EBF\
|
|
4100
|
+
"\u5207\u6362\u57FA\u7EBF\u5E76\u62C9\u53D6\u6700\u65B0",
|
|
4107
4101
|
async () => checkoutBaselineBranches(msg.baseBranch, { cwd: workdir }),
|
|
4108
4102
|
(result) => `baseline=${result.baseline} kind=${result.kind} repos=${result.repos.length}`
|
|
4109
4103
|
);
|
package/package.json
CHANGED
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
|
|
13
13
|
- **禁止**修改业务代码、提交 Git、创建 PR。
|
|
14
14
|
- **禁止**为修依赖或修编译错误而改代码 / 装依赖 / 改 lockfile;构建失败 → 以错误结束。
|
|
15
|
-
- **禁止**在仓库工作区内留下交付用 zip
|
|
15
|
+
- **禁止**在仓库工作区内留下交付用 zip;临时文件只用 `/data/` 下目录(如 `/data/artifacts/.tmp/<packageId>/`),成功后可删临时目录。
|
|
16
16
|
- 临时目录与最终产物均在 `/data` 下,不要用 `/tmp`。
|
|
17
|
+
- 后端交付 jar 的路径与文件名**只**来自 deploy 文档;禁止在本规则中写死具体项目的 jar 清单。
|
|
17
18
|
|
|
18
19
|
### target=frontend(Vue)
|
|
19
20
|
|
|
@@ -25,48 +26,36 @@
|
|
|
25
26
|
|
|
26
27
|
`/data/artifacts/vue/<packageId>/dist.zip`
|
|
27
28
|
|
|
29
|
+
**压缩结构(必须)**:zip 内顶层就是名为 `dist` 的目录,解压后得到 `dist/…`,**禁止**出现 `dist/dist/…`。
|
|
30
|
+
|
|
31
|
+
- 正确:在**含有 `dist` 的父目录**执行,例如
|
|
32
|
+
`zip -r /data/artifacts/vue/<packageId>/dist.zip dist`
|
|
33
|
+
(把目录名 `dist` 打进包,不要先 `cd dist` 再压当前目录)。
|
|
34
|
+
- 错误:`cd dist && zip -r … .`(解压后没有顶层 `dist`);或把整个前端仓/多套一层 `dist` 再压(解压成 `dist/dist`)。
|
|
35
|
+
|
|
28
36
|
6. 缺产物或构建失败 → 调用 **SetPackageFailed**(传入失败原因)后结束。
|
|
29
37
|
|
|
30
38
|
### target=backend(SpringBoot)
|
|
31
39
|
|
|
32
|
-
1. 按 deploy
|
|
33
|
-
2.
|
|
34
|
-
3.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
"target": "backend",
|
|
50
|
-
"baseBranch": "release/1.0",
|
|
51
|
-
"createdAt": "2026-09-02T07:00:00.000Z",
|
|
52
|
-
"commitId": "a1b2c3d4…",
|
|
53
|
-
"jars": [
|
|
54
|
-
{
|
|
55
|
-
"name": "app-1.2.3.jar",
|
|
56
|
-
"hash": "e3b0…b855",
|
|
57
|
-
"path": "/data/artifacts/springboot/jars/e3b0…b855.jar"
|
|
58
|
-
}
|
|
59
|
-
],
|
|
60
|
-
"sqls": [
|
|
61
|
-
{
|
|
62
|
-
"name": "20260301_add_col.sql",
|
|
63
|
-
"hash": "2c26…e7ae",
|
|
64
|
-
"path": "/data/artifacts/springboot/sqls/2c26…e7ae.sql"
|
|
65
|
-
}
|
|
66
|
-
]
|
|
67
|
-
}
|
|
68
|
-
```
|
|
40
|
+
1. 按 deploy 文档进入后端目录,执行文档写明的构建命令(通常 `mvn clean package`)。
|
|
41
|
+
2. **只**收集 deploy 文档标明的交付 jar(路径/文件名/glob 以文档为准)。**禁止**全量收集 `target/lib`、**禁止**打包 SQL、**禁止**在规则或命令里写死具体 jar 名。
|
|
42
|
+
3. 确认文档列出的每个 jar 均已生成;缺任一文件 → SetPackageFailed。
|
|
43
|
+
4. 在 `/data` 下将上述 jar **打成一个 zip**(勿在工作区生成交付 zip),落到:
|
|
44
|
+
|
|
45
|
+
`/data/artifacts/springboot/<packageId>/jars.zip`
|
|
46
|
+
|
|
47
|
+
**压缩结构(必须)**:zip 内顶层直接是各个 `.jar` 文件(解压后同级列出 jar),**禁止**多套一层无意义目录,也禁止把整个 `lib` 目录原样打进包。
|
|
48
|
+
|
|
49
|
+
示例(路径与文件列表须来自 deploy,勿照抄本例文件名):
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
mkdir -p /data/artifacts/springboot/<packageId> /data/artifacts/.tmp/<packageId>
|
|
53
|
+
# 按 deploy 文档把待交付 jar 拷到临时目录后:
|
|
54
|
+
cd /data/artifacts/.tmp/<packageId>
|
|
55
|
+
zip /data/artifacts/springboot/<packageId>/jars.zip ./*.jar
|
|
56
|
+
```
|
|
69
57
|
|
|
58
|
+
5. 可选:同目录写 `commitId.txt`(后端仓 `git rev-parse HEAD` 一行),非必须。
|
|
70
59
|
6. 构建或落盘失败 → 调用 **SetPackageFailed**(传入失败原因)后结束。
|
|
71
60
|
|
|
72
61
|
### 结束
|