ai-project-manage-cli 2.0.13 → 2.0.14

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.
Files changed (87) hide show
  1. package/dist/cli/commands/deploy-backend.d.ts.map +1 -1
  2. package/dist/cli/commands/deploy-backend.js +18 -32
  3. package/dist/cli/commands/deploy-backend.js.map +1 -1
  4. package/dist/core/apm-config.d.ts +18 -30
  5. package/dist/core/apm-config.d.ts.map +1 -1
  6. package/dist/core/apm-config.js +22 -40
  7. package/dist/core/apm-config.js.map +1 -1
  8. package/dist/core/backend-deploy/backend-deploy-workflow.d.ts +8 -5
  9. package/dist/core/backend-deploy/backend-deploy-workflow.d.ts.map +1 -1
  10. package/dist/core/backend-deploy/backend-deploy-workflow.js +57 -31
  11. package/dist/core/backend-deploy/backend-deploy-workflow.js.map +1 -1
  12. package/dist/core/backend-deploy/command-runner.d.ts +11 -0
  13. package/dist/core/backend-deploy/command-runner.d.ts.map +1 -0
  14. package/dist/core/backend-deploy/command-runner.js +47 -0
  15. package/dist/core/backend-deploy/command-runner.js.map +1 -0
  16. package/dist/core/backend-deploy/dockerode-client/client.d.ts +18 -0
  17. package/dist/core/backend-deploy/dockerode-client/client.d.ts.map +1 -0
  18. package/dist/core/backend-deploy/dockerode-client/client.js +114 -0
  19. package/dist/core/backend-deploy/dockerode-client/client.js.map +1 -0
  20. package/dist/core/backend-deploy/dockerode-client/connection-options.d.ts +6 -0
  21. package/dist/core/backend-deploy/dockerode-client/connection-options.d.ts.map +1 -0
  22. package/dist/core/backend-deploy/dockerode-client/connection-options.js +52 -0
  23. package/dist/core/backend-deploy/dockerode-client/connection-options.js.map +1 -0
  24. package/dist/core/backend-deploy/dockerode-client/container-inspect-format.d.ts +3 -0
  25. package/dist/core/backend-deploy/dockerode-client/container-inspect-format.d.ts.map +1 -0
  26. package/dist/core/backend-deploy/dockerode-client/container-inspect-format.js +23 -0
  27. package/dist/core/backend-deploy/dockerode-client/container-inspect-format.js.map +1 -0
  28. package/dist/core/backend-deploy/dockerode-client/container-options.d.ts +4 -0
  29. package/dist/core/backend-deploy/dockerode-client/container-options.d.ts.map +1 -0
  30. package/dist/core/backend-deploy/dockerode-client/container-options.js +36 -0
  31. package/dist/core/backend-deploy/dockerode-client/container-options.js.map +1 -0
  32. package/dist/core/backend-deploy/dockerode-client/env.d.ts +3 -0
  33. package/dist/core/backend-deploy/dockerode-client/env.d.ts.map +1 -0
  34. package/dist/core/backend-deploy/dockerode-client/env.js +37 -0
  35. package/dist/core/backend-deploy/dockerode-client/env.js.map +1 -0
  36. package/dist/core/backend-deploy/dockerode-client/index.d.ts +8 -0
  37. package/dist/core/backend-deploy/dockerode-client/index.d.ts.map +1 -0
  38. package/dist/core/backend-deploy/dockerode-client/index.js +17 -0
  39. package/dist/core/backend-deploy/dockerode-client/index.js.map +1 -0
  40. package/dist/core/backend-deploy/dockerode-client/ports.d.ts +9 -0
  41. package/dist/core/backend-deploy/dockerode-client/ports.d.ts.map +1 -0
  42. package/dist/core/backend-deploy/dockerode-client/ports.js +35 -0
  43. package/dist/core/backend-deploy/dockerode-client/ports.js.map +1 -0
  44. package/dist/core/backend-deploy/dockerode-client/runtime.d.ts +7 -0
  45. package/dist/core/backend-deploy/dockerode-client/runtime.d.ts.map +1 -0
  46. package/dist/core/backend-deploy/dockerode-client/runtime.js +26 -0
  47. package/dist/core/backend-deploy/dockerode-client/runtime.js.map +1 -0
  48. package/dist/core/backend-deploy/dockerode-client/types.d.ts +62 -0
  49. package/dist/core/backend-deploy/dockerode-client/types.d.ts.map +1 -0
  50. package/dist/core/backend-deploy/dockerode-client/types.js +3 -0
  51. package/dist/core/backend-deploy/dockerode-client/types.js.map +1 -0
  52. package/dist/core/backend-deploy/image-tag.d.ts +1 -1
  53. package/dist/core/backend-deploy/image-tag.d.ts.map +1 -1
  54. package/dist/core/backend-deploy/image-tag.js +2 -2
  55. package/dist/core/backend-deploy/image-tag.js.map +1 -1
  56. package/dist/core/backend-deploy/index.d.ts +1 -10
  57. package/dist/core/backend-deploy/index.d.ts.map +1 -1
  58. package/dist/core/backend-deploy/index.js +1 -18
  59. package/dist/core/backend-deploy/index.js.map +1 -1
  60. package/dist/core/backend-deploy/local-docker-build.d.ts +3 -6
  61. package/dist/core/backend-deploy/local-docker-build.d.ts.map +1 -1
  62. package/dist/core/backend-deploy/local-docker-build.js +9 -13
  63. package/dist/core/backend-deploy/local-docker-build.js.map +1 -1
  64. package/dist/core/backend-deploy/logger.d.ts +10 -0
  65. package/dist/core/backend-deploy/logger.d.ts.map +1 -0
  66. package/dist/core/backend-deploy/logger.js +22 -0
  67. package/dist/core/backend-deploy/logger.js.map +1 -0
  68. package/dist/core/backend-deploy/registry-login-push.d.ts +18 -8
  69. package/dist/core/backend-deploy/registry-login-push.d.ts.map +1 -1
  70. package/dist/core/backend-deploy/registry-login-push.js +25 -36
  71. package/dist/core/backend-deploy/registry-login-push.js.map +1 -1
  72. package/dist/core/backend-deploy/remote-docker-client.d.ts.map +1 -1
  73. package/dist/core/backend-deploy/remote-docker-client.js +1 -0
  74. package/dist/core/backend-deploy/remote-docker-client.js.map +1 -1
  75. package/dist/core/backend-deploy/resolve-dockerfile.d.ts +2 -7
  76. package/dist/core/backend-deploy/resolve-dockerfile.d.ts.map +1 -1
  77. package/dist/core/backend-deploy/resolve-dockerfile.js +9 -18
  78. package/dist/core/backend-deploy/resolve-dockerfile.js.map +1 -1
  79. package/dist/core/backend-deploy/run-docker-cli.d.ts +3 -8
  80. package/dist/core/backend-deploy/run-docker-cli.d.ts.map +1 -1
  81. package/dist/core/backend-deploy/run-docker-cli.js +4 -23
  82. package/dist/core/backend-deploy/run-docker-cli.js.map +1 -1
  83. package/dist/core/backend-deploy/types.d.ts +15 -63
  84. package/dist/core/backend-deploy/types.d.ts.map +1 -1
  85. package/dist/core/backend-deploy/types.js +0 -3
  86. package/dist/core/backend-deploy/types.js.map +1 -1
  87. package/package.json +1 -1
@@ -1,23 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pullImageOnRemote = exports.createRemoteDockerClient = exports.runProcess = exports.runDockerCli = exports.loginAndPushImage = exports.dockerPushImage = exports.dockerLoginPrivateRegistry = exports.resolveDockerBuildPaths = exports.buildDockerImageLocally = exports.BackendDeployWorkflow = exports.assertDeployImageTag = void 0;
4
- var image_tag_1 = require("./image-tag");
5
- Object.defineProperty(exports, "assertDeployImageTag", { enumerable: true, get: function () { return image_tag_1.assertDeployImageTag; } });
3
+ exports.BackendDeployWorkflow = void 0;
6
4
  var backend_deploy_workflow_1 = require("./backend-deploy-workflow");
7
5
  Object.defineProperty(exports, "BackendDeployWorkflow", { enumerable: true, get: function () { return backend_deploy_workflow_1.BackendDeployWorkflow; } });
8
- var local_docker_build_1 = require("./local-docker-build");
9
- Object.defineProperty(exports, "buildDockerImageLocally", { enumerable: true, get: function () { return local_docker_build_1.buildDockerImageLocally; } });
10
- var resolve_dockerfile_1 = require("./resolve-dockerfile");
11
- Object.defineProperty(exports, "resolveDockerBuildPaths", { enumerable: true, get: function () { return resolve_dockerfile_1.resolveDockerBuildPaths; } });
12
- var registry_login_push_1 = require("./registry-login-push");
13
- Object.defineProperty(exports, "dockerLoginPrivateRegistry", { enumerable: true, get: function () { return registry_login_push_1.dockerLoginPrivateRegistry; } });
14
- Object.defineProperty(exports, "dockerPushImage", { enumerable: true, get: function () { return registry_login_push_1.dockerPushImage; } });
15
- Object.defineProperty(exports, "loginAndPushImage", { enumerable: true, get: function () { return registry_login_push_1.loginAndPushImage; } });
16
- var run_docker_cli_1 = require("./run-docker-cli");
17
- Object.defineProperty(exports, "runDockerCli", { enumerable: true, get: function () { return run_docker_cli_1.runDockerCli; } });
18
- Object.defineProperty(exports, "runProcess", { enumerable: true, get: function () { return run_docker_cli_1.runProcess; } });
19
- var remote_docker_client_1 = require("./remote-docker-client");
20
- Object.defineProperty(exports, "createRemoteDockerClient", { enumerable: true, get: function () { return remote_docker_client_1.createRemoteDockerClient; } });
21
- var remote_pull_image_1 = require("./remote-pull-image");
22
- Object.defineProperty(exports, "pullImageOnRemote", { enumerable: true, get: function () { return remote_pull_image_1.pullImageOnRemote; } });
23
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/index.ts"],"names":[],"mappings":";;;AAAA,yCAAmD;AAA1C,iHAAA,oBAAoB,OAAA;AAC7B,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAC9B,2DAA+D;AAAtD,6HAAA,uBAAuB,OAAA;AAChC,2DAA+D;AAAtD,6HAAA,uBAAuB,OAAA;AAEhC,6DAI+B;AAH7B,iIAAA,0BAA0B,OAAA;AAC1B,sHAAA,eAAe,OAAA;AACf,wHAAA,iBAAiB,OAAA;AAEnB,mDAA4D;AAAnD,8GAAA,YAAY,OAAA;AAAE,4GAAA,UAAU,OAAA;AACjC,+DAAkE;AAAzD,gIAAA,wBAAwB,OAAA;AAEjC,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/index.ts"],"names":[],"mappings":";;;AAAA,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA"}
@@ -1,11 +1,8 @@
1
1
  /**
2
2
  * 使用本机 Docker CLI 构建镜像(`docker build`)。
3
- *
4
- * 使用绝对路径指定 Dockerfile 与 context,避免工作目录与相对 `-f` 歧义。
5
3
  */
6
4
  export declare function buildDockerImageLocally(params: {
7
- dockerfileAbs: string;
8
- contextAbs: string;
9
- imageRef: string;
10
- }): Promise<void>;
5
+ image: string;
6
+ tag: string;
7
+ }, cwd?: string): void;
11
8
  //# sourceMappingURL=local-docker-build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-docker-build.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/local-docker-build.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE;IACpD,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB"}
1
+ {"version":3,"file":"local-docker-build.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/local-docker-build.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE;IACN,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,EACD,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CASN"}
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildDockerImageLocally = buildDockerImageLocally;
4
4
  const node_os_1 = require("node:os");
5
- const run_docker_cli_1 = require("./run-docker-cli");
5
+ const command_runner_1 = require("./command-runner");
6
+ const logger_1 = require("./logger");
6
7
  /**
7
8
  * 在 macOS(Apple 芯片)上本机构建时,默认指定目标平台为 `linux/amd64`,
8
9
  * 以便与常见 Linux 服务器一致,避免默认构建出 arm64 镜像。
@@ -12,18 +13,13 @@ function dockerBuildPlatformFlags() {
12
13
  }
13
14
  /**
14
15
  * 使用本机 Docker CLI 构建镜像(`docker build`)。
15
- *
16
- * 使用绝对路径指定 Dockerfile 与 context,避免工作目录与相对 `-f` 歧义。
17
16
  */
18
- async function buildDockerImageLocally(params) {
19
- await (0, run_docker_cli_1.runDockerCli)([
20
- "build",
21
- ...dockerBuildPlatformFlags(),
22
- "-f",
23
- params.dockerfileAbs,
24
- "-t",
25
- params.imageRef,
26
- params.contextAbs,
27
- ], {});
17
+ function buildDockerImageLocally(params, cwd) {
18
+ const platformFlags = dockerBuildPlatformFlags();
19
+ const command = `docker buildx build ${platformFlags.join(" ")} -t ${params.image}:${params.tag} .`;
20
+ logger_1.Logger.info("开始构建 Docker 镜像...");
21
+ logger_1.Logger.info(`镜像名称: ${params.image}:${params.tag}`);
22
+ command_runner_1.CommandRunner.exec(command, cwd);
23
+ logger_1.Logger.info("✓ 镜像构建成功");
28
24
  }
29
25
  //# sourceMappingURL=local-docker-build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-docker-build.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/local-docker-build.ts"],"names":[],"mappings":";;AAiBA,0DAiBC;AAlCD,qCAAmC;AAEnC,qDAAgD;AAEhD;;;GAGG;AACH,SAAS,wBAAwB;IAC/B,OAAO,IAAA,kBAAQ,GAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,uBAAuB,CAAC,MAI7C;IACC,MAAM,IAAA,6BAAY,EAChB;QACE,OAAO;QACP,GAAG,wBAAwB,EAAE;QAC7B,IAAI;QACJ,MAAM,CAAC,aAAa;QACpB,IAAI;QACJ,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,UAAU;KAClB,EACD,EAAE,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"local-docker-build.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/local-docker-build.ts"],"names":[],"mappings":";;AAgBA,0DAeC;AA/BD,qCAAmC;AAEnC,qDAAiD;AACjD,qCAAkC;AAElC;;;GAGG;AACH,SAAS,wBAAwB;IAC/B,OAAO,IAAA,kBAAQ,GAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,MAGC,EACD,GAAY;IAEZ,MAAM,aAAa,GAAG,wBAAwB,EAAE,CAAC;IACjD,MAAM,OAAO,GAAG,uBAAuB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,OAC5D,MAAM,CAAC,KACT,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC;IACnB,eAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjC,eAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACnD,8BAAa,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjC,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 日志工具类
3
+ */
4
+ export declare class Logger {
5
+ static info(message: string): void;
6
+ static success(message: string): void;
7
+ static warn(message: string): void;
8
+ static error(message: string): void;
9
+ }
10
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,MAAM;IACjB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGpC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Logger = void 0;
4
+ /**
5
+ * 日志工具类
6
+ */
7
+ class Logger {
8
+ static info(message) {
9
+ console.log(`\x1b[36m[INFO]\x1b[0m ${message}`);
10
+ }
11
+ static success(message) {
12
+ console.log(`\x1b[32m[SUCCESS]\x1b[0m ${message}`);
13
+ }
14
+ static warn(message) {
15
+ console.log(`\x1b[33m[WARN]\x1b[0m ${message}`);
16
+ }
17
+ static error(message) {
18
+ console.log(`\x1b[31m[ERROR]\x1b[0m ${message}`);
19
+ }
20
+ }
21
+ exports.Logger = Logger;
22
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/logger.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,MAAM;IACjB,MAAM,CAAC,IAAI,CAAC,OAAe;QACzB,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,CAAC,GAAG,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe;QACzB,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe;QAC1B,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;CACF;AAhBD,wBAgBC"}
@@ -1,14 +1,24 @@
1
- import type { PrivateRegistryCredentials } from "./types";
2
1
  /**
3
- * 向私有 Registry 登录(`docker login`,密码经 stdin 传入,避免出现在进程列表中)。
2
+ * 向私有 Registry 登录(`docker login --password-stdin`,密码仅经 stdin 传入)。
4
3
  */
5
- export declare function dockerLoginPrivateRegistry(registry: PrivateRegistryCredentials): Promise<void>;
4
+ export declare function dockerLoginPrivateRegistry(params: {
5
+ registryUser: string;
6
+ registryPassword: string;
7
+ registryHost: string;
8
+ }, cwd?: string): void;
9
+ export declare function dockerTagImage(params: {
10
+ image: string;
11
+ tag: string;
12
+ registryHost: string;
13
+ registryNamespace: string;
14
+ }, cwd?: string): void;
6
15
  /**
7
16
  * 推送镜像到已登录的 Registry(`docker push`)。
8
17
  */
9
- export declare function dockerPushImage(imageRef: string): Promise<void>;
10
- /**
11
- * 登录私有仓库并推送镜像(本地构建后的典型步骤)。
12
- */
13
- export declare function loginAndPushImage(registry: PrivateRegistryCredentials, imageRef: string): Promise<void>;
18
+ export declare function dockerPushImage(params: {
19
+ image: string;
20
+ tag: string;
21
+ registryHost: string;
22
+ registryNamespace: string;
23
+ }, cwd?: string): void;
14
24
  //# sourceMappingURL=registry-login-push.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry-login-push.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/registry-login-push.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAG1D;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,0BAA0B,GACnC,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,0BAA0B,EACpC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAGf"}
1
+ {"version":3,"file":"registry-login-push.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/registry-login-push.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE;IACN,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB,EACD,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAaN;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE;IACN,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,EACD,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAQN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE;IACN,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,EACD,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAQN"}
@@ -1,48 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.dockerLoginPrivateRegistry = dockerLoginPrivateRegistry;
4
+ exports.dockerTagImage = dockerTagImage;
4
5
  exports.dockerPushImage = dockerPushImage;
5
- exports.loginAndPushImage = loginAndPushImage;
6
- const node_child_process_1 = require("node:child_process");
7
- const run_docker_cli_1 = require("./run-docker-cli");
6
+ const command_runner_1 = require("./command-runner");
7
+ const logger_1 = require("./logger");
8
8
  /**
9
- * 向私有 Registry 登录(`docker login`,密码经 stdin 传入,避免出现在进程列表中)。
9
+ * 向私有 Registry 登录(`docker login --password-stdin`,密码仅经 stdin 传入)。
10
10
  */
11
- function dockerLoginPrivateRegistry(registry) {
12
- return new Promise((resolve, reject) => {
13
- const child = (0, node_child_process_1.spawn)("docker", [
14
- "login",
15
- "--username",
16
- registry.username,
17
- "--password-stdin",
18
- registry.registryHost,
19
- ], {
20
- stdio: ["pipe", "inherit", "inherit"],
21
- shell: false,
22
- });
23
- child.stdin?.write(`${registry.password}\n`);
24
- child.stdin?.end();
25
- child.on("error", reject);
26
- child.on("close", (code) => {
27
- if (code === 0) {
28
- resolve();
29
- return;
30
- }
31
- reject(new Error(`docker login 失败(退出码 ${code ?? "?"}),仓库:${registry.registryHost}`));
32
- });
33
- });
11
+ function dockerLoginPrivateRegistry(params, cwd) {
12
+ const { registryUser, registryPassword, registryHost } = params;
13
+ logger_1.Logger.info("检查配置参数...");
14
+ if (!registryUser || !registryPassword || !registryHost) {
15
+ logger_1.Logger.error("Docker 镜像仓库配置错误,缺少参数,登录失败!");
16
+ process.exit(1);
17
+ }
18
+ logger_1.Logger.info("登录 Docker 镜像仓库...");
19
+ command_runner_1.CommandRunner.exec(`docker login --username=${registryUser} --password=${registryPassword} ${registryHost}`, cwd);
20
+ logger_1.Logger.info(" Docker 登录成功");
34
21
  }
35
- /**
36
- * 推送镜像到已登录的 Registry(`docker push`)。
37
- */
38
- async function dockerPushImage(imageRef) {
39
- await (0, run_docker_cli_1.runDockerCli)(["push", imageRef], {});
22
+ function dockerTagImage(params, cwd) {
23
+ const { image, tag, registryHost, registryNamespace } = params;
24
+ logger_1.Logger.info("标记 Docker 镜像...");
25
+ command_runner_1.CommandRunner.exec(`docker tag ${image}:${tag} ${registryHost}/${registryNamespace}/${image}:${tag}`, cwd);
26
+ logger_1.Logger.info("✓ 镜像标记成功");
40
27
  }
41
28
  /**
42
- * 登录私有仓库并推送镜像(本地构建后的典型步骤)。
29
+ * 推送镜像到已登录的 Registry(`docker push`)。
43
30
  */
44
- async function loginAndPushImage(registry, imageRef) {
45
- await dockerLoginPrivateRegistry(registry);
46
- await dockerPushImage(imageRef);
31
+ function dockerPushImage(params, cwd) {
32
+ const { image, tag, registryHost, registryNamespace } = params;
33
+ logger_1.Logger.info("开始推送 Docker 镜像...");
34
+ command_runner_1.CommandRunner.exec(`docker push ${registryHost}/${registryNamespace}/${image}:${tag}`, cwd);
35
+ logger_1.Logger.info("✓ 镜像推送成功");
47
36
  }
48
37
  //# sourceMappingURL=registry-login-push.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry-login-push.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/registry-login-push.ts"],"names":[],"mappings":";;AAQA,gEAmCC;AAKD,0CAEC;AAKD,8CAMC;AA7DD,2DAA2C;AAG3C,qDAAgD;AAEhD;;GAEG;AACH,SAAgB,0BAA0B,CACxC,QAAoC;IAEpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,IAAA,0BAAK,EACjB,QAAQ,EACR;YACE,OAAO;YACP,YAAY;YACZ,QAAQ,CAAC,QAAQ;YACjB,kBAAkB;YAClB,QAAQ,CAAC,YAAY;SACtB,EACD;YACE,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;YACrC,KAAK,EAAE,KAAK;SACb,CACF,CAAC;QAEF,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC;QAC7C,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;QAEnB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,MAAM,CACJ,IAAI,KAAK,CACP,uBAAuB,IAAI,IAAI,GAAG,QAAQ,QAAQ,CAAC,YAAY,EAAE,CAClE,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,MAAM,IAAA,6BAAY,EAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB,CACrC,QAAoC,EACpC,QAAgB;IAEhB,MAAM,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"registry-login-push.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/registry-login-push.ts"],"names":[],"mappings":";;AAMA,gEAoBC;AAED,wCAgBC;AAKD,0CAgBC;AAjED,qDAAiD;AACjD,qCAAkC;AAElC;;GAEG;AACH,SAAgB,0BAA0B,CACxC,MAIC,EACD,GAAY;IAEZ,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAChE,eAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB,IAAI,CAAC,YAAY,EAAE,CAAC;QACxD,eAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,eAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjC,8BAAa,CAAC,IAAI,CAChB,2BAA2B,YAAY,eAAe,gBAAgB,IAAI,YAAY,EAAE,EACxF,GAAG,CACJ,CAAC;IACF,eAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/B,CAAC;AAED,SAAgB,cAAc,CAC5B,MAKC,EACD,GAAY;IAEZ,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;IAC/D,eAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/B,8BAAa,CAAC,IAAI,CAChB,cAAc,KAAK,IAAI,GAAG,IAAI,YAAY,IAAI,iBAAiB,IAAI,KAAK,IAAI,GAAG,EAAE,EACjF,GAAG,CACJ,CAAC;IACF,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,MAKC,EACD,GAAY;IAEZ,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;IAC/D,eAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjC,8BAAa,CAAC,IAAI,CAChB,eAAe,YAAY,IAAI,iBAAiB,IAAI,KAAK,IAAI,GAAG,EAAE,EAClE,GAAG,CACJ,CAAC;IACF,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"remote-docker-client.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/remote-docker-client.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,sBAAsB,GAC9B,iBAAiB,CAoBnB"}
1
+ {"version":3,"file":"remote-docker-client.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/remote-docker-client.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,sBAAsB,GAC9B,iBAAiB,CAqBnB"}
@@ -18,6 +18,7 @@ function createRemoteDockerClient(options) {
18
18
  host: options.host,
19
19
  port: options.port,
20
20
  protocol,
21
+ socketPath: options.socketPath || "/var/run/docker.sock",
21
22
  };
22
23
  if (options.caPath) {
23
24
  modemOpts.ca = (0, node_fs_1.readFileSync)(options.caPath);
@@ -1 +1 @@
1
- {"version":3,"file":"remote-docker-client.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/remote-docker-client.ts"],"names":[],"mappings":";;;;;AAcA,4DAsBC;AApCD,qCAAuC;AAEvC,0DAA+B;AAM/B;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,OAA+B;IAE/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC;IAE7C,MAAM,SAAS,GAAyB;QACtC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ;KACT,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,SAAS,CAAC,EAAE,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,SAAS,CAAC,IAAI,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,SAAS,CAAC,GAAG,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,mBAAM,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"remote-docker-client.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/remote-docker-client.ts"],"names":[],"mappings":";;;;;AAcA,4DAuBC;AArCD,qCAAuC;AAEvC,0DAA+B;AAM/B;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,OAA+B;IAE/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC;IAE7C,MAAM,SAAS,GAAyB;QACtC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ;QACR,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,sBAAsB;KACzD,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,SAAS,CAAC,EAAE,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,SAAS,CAAC,IAAI,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,SAAS,CAAC,GAAG,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,mBAAM,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC"}
@@ -1,12 +1,7 @@
1
- import type { BackendDeployParams } from "./types";
2
- export type ResolvedDockerBuildPaths = {
3
- dockerfileAbs: string;
4
- contextAbs: string;
5
- };
6
1
  /**
7
2
  * 校验 Dockerfile 与构建上下文路径,并解析为绝对路径。
8
3
  *
9
- * @param cwd - 解析相对路径时的基准目录,一般为 `process.cwd()`
4
+ * @param cwd - 解析相对路径时的基准目录`
10
5
  */
11
- export declare function resolveDockerBuildPaths(params: Pick<BackendDeployParams, "dockerfilePath" | "contextPath">, cwd: string): ResolvedDockerBuildPaths;
6
+ export declare function resolveDockerBuildPaths(cwd: string): string;
12
7
  //# sourceMappingURL=resolve-dockerfile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-dockerfile.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/resolve-dockerfile.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,MAAM,wBAAwB,GAAG;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,GAAG,aAAa,CAAC,EACnE,GAAG,EAAE,MAAM,GACV,wBAAwB,CAqB1B"}
1
+ {"version":3,"file":"resolve-dockerfile.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/resolve-dockerfile.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,UAQlD"}
@@ -6,28 +6,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.resolveDockerBuildPaths = resolveDockerBuildPaths;
7
7
  const node_fs_1 = require("node:fs");
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
+ const logger_1 = require("./logger");
9
10
  /**
10
11
  * 校验 Dockerfile 与构建上下文路径,并解析为绝对路径。
11
12
  *
12
- * @param cwd - 解析相对路径时的基准目录,一般为 `process.cwd()`
13
+ * @param cwd - 解析相对路径时的基准目录`
13
14
  */
14
- function resolveDockerBuildPaths(params, cwd) {
15
- const dockerfileAbs = node_path_1.default.resolve(cwd, params.dockerfilePath);
16
- if (!(0, node_fs_1.existsSync)(dockerfileAbs)) {
17
- throw new Error(`Dockerfile 不存在:${dockerfileAbs}`);
15
+ function resolveDockerBuildPaths(cwd) {
16
+ const dockerfilePath = node_path_1.default.join(cwd, "Dockerfile");
17
+ logger_1.Logger.info(`查找Dockerfile文件,路径: ${dockerfilePath}`);
18
+ if (!(0, node_fs_1.existsSync)(dockerfilePath)) {
19
+ throw new Error(`Dockerfile 不存在:${dockerfilePath}`);
18
20
  }
19
- if (!(0, node_fs_1.statSync)(dockerfileAbs).isFile()) {
20
- throw new Error(`路径不是文件(应为 Dockerfile):${dockerfileAbs}`);
21
- }
22
- const contextAbs = params.contextPath
23
- ? node_path_1.default.resolve(cwd, params.contextPath)
24
- : node_path_1.default.dirname(dockerfileAbs);
25
- if (!(0, node_fs_1.existsSync)(contextAbs)) {
26
- throw new Error(`构建上下文目录不存在:${contextAbs}`);
27
- }
28
- if (!(0, node_fs_1.statSync)(contextAbs).isDirectory()) {
29
- throw new Error(`构建上下文不是目录:${contextAbs}`);
30
- }
31
- return { dockerfileAbs, contextAbs };
21
+ logger_1.Logger.info("✓ Dockerfile 存在");
22
+ return dockerfilePath;
32
23
  }
33
24
  //# sourceMappingURL=resolve-dockerfile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-dockerfile.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/resolve-dockerfile.ts"],"names":[],"mappings":";;;;;AAeA,0DAwBC;AAvCD,qCAA+C;AAC/C,0DAA6B;AAS7B;;;;GAIG;AACH,SAAgB,uBAAuB,CACrC,MAAmE,EACnE,GAAW;IAEX,MAAM,aAAa,GAAG,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAA,oBAAU,EAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,kBAAkB,aAAa,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,CAAC,IAAA,kBAAQ,EAAC,aAAa,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,yBAAyB,aAAa,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW;QACnC,CAAC,CAAC,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC;QACvC,CAAC,CAAC,mBAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhC,IAAI,CAAC,IAAA,oBAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,IAAA,kBAAQ,EAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"resolve-dockerfile.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/resolve-dockerfile.ts"],"names":[],"mappings":";;;;;AASA,0DAQC;AAjBD,qCAAqC;AACrC,0DAA6B;AAC7B,qCAAkC;AAElC;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,GAAW;IACjD,MAAM,cAAc,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACpD,eAAM,CAAC,IAAI,CAAC,sBAAsB,cAAc,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,IAAA,oBAAU,EAAC,cAAc,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,kBAAkB,cAAc,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,eAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/B,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -1,14 +1,9 @@
1
- export type RunProcessOptions = {
1
+ export type RunDockerCliOptions = {
2
2
  cwd?: string;
3
- /** 默认继承当前进程的 stdio,便于在终端看到 docker 输出 */
4
- stdio?: "inherit" | "pipe";
5
3
  };
6
4
  /**
7
5
  * 执行本地 `docker` CLI(需已安装 Docker Desktop / Engine 且 `docker` 在 PATH 中)。
6
+ * 经 {@link CommandRunner.execFileWithOutput} 调用,参数不经 shell。
8
7
  */
9
- export declare function runDockerCli(args: string[], options?: RunProcessOptions): Promise<void>;
10
- /**
11
- * 通用子进程封装:非 0 退出码时 reject。
12
- */
13
- export declare function runProcess(command: string, args: string[], options?: RunProcessOptions): Promise<void>;
8
+ export declare function runDockerCli(args: string[], options?: RunDockerCliOptions): void;
14
9
  //# sourceMappingURL=run-docker-cli.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-docker-cli.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/run-docker-cli.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqBf"}
1
+ {"version":3,"file":"run-docker-cli.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/run-docker-cli.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI,CAIN"}
@@ -1,33 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runDockerCli = runDockerCli;
4
- exports.runProcess = runProcess;
5
- const node_child_process_1 = require("node:child_process");
4
+ const command_runner_1 = require("./command-runner");
6
5
  /**
7
6
  * 执行本地 `docker` CLI(需已安装 Docker Desktop / Engine 且 `docker` 在 PATH 中)。
7
+ * 经 {@link CommandRunner.execFileWithOutput} 调用,参数不经 shell。
8
8
  */
9
9
  function runDockerCli(args, options) {
10
- return runProcess("docker", args, options);
11
- }
12
- /**
13
- * 通用子进程封装:非 0 退出码时 reject。
14
- */
15
- function runProcess(command, args, options) {
16
- return new Promise((resolve, reject) => {
17
- const child = (0, node_child_process_1.spawn)(command, args, {
18
- stdio: options?.stdio ?? "inherit",
19
- shell: false,
20
- cwd: options?.cwd,
21
- });
22
- child.on("error", reject);
23
- child.on("close", (code, signal) => {
24
- if (code === 0) {
25
- resolve();
26
- return;
27
- }
28
- const hint = signal ? `,信号 ${signal}` : "";
29
- reject(new Error(`命令失败:${command} ${args.join(" ")}(退出码 ${code ?? "?"}${hint})`));
30
- });
10
+ command_runner_1.CommandRunner.execFileWithOutput("docker", args, {
11
+ cwd: options?.cwd,
31
12
  });
32
13
  }
33
14
  //# sourceMappingURL=run-docker-cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-docker-cli.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/run-docker-cli.ts"],"names":[],"mappings":";;AAWA,oCAKC;AAKD,gCAyBC;AA9CD,2DAA2C;AAQ3C;;GAEG;AACH,SAAgB,YAAY,CAC1B,IAAc,EACd,OAA2B;IAE3B,OAAO,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,OAAe,EACf,IAAc,EACd,OAA2B;IAE3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,OAAO,EAAE,IAAI,EAAE;YACjC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,SAAS;YAClC,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,OAAO,EAAE,GAAG;SAClB,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACjC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,MAAM,CACJ,IAAI,KAAK,CACP,QAAQ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,CAC/D,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"run-docker-cli.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/run-docker-cli.ts"],"names":[],"mappings":";;AAUA,oCAOC;AAjBD,qDAAiD;AAMjD;;;GAGG;AACH,SAAgB,YAAY,CAC1B,IAAc,EACd,OAA6B;IAE7B,8BAAa,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE;QAC/C,GAAG,EAAE,OAAO,EAAE,GAAG;KAClB,CAAC,CAAC;AACL,CAAC"}
@@ -1,69 +1,21 @@
1
- /**
2
- * 后端镜像部署相关类型(后续可由 .apm/apm.config.json 映射注入)。
3
- */
4
- /** 阿里云(或其它兼容 Docker Registry V2 的)私有仓库登录信息 */
5
- export type PrivateRegistryCredentials = {
6
- /** 仓库主机名,如 registry.cn-hangzhou.aliyuncs.com */
7
- registryHost: string;
8
- username: string;
9
- password: string;
10
- };
11
- /**
12
- * 远程 Docker 守护进程连接参数(通常对应 TLS 的 Docker Host)。
13
- * 与 dockerode / DockerModem 选项对齐。
14
- */
15
- export type RemoteDockerTlsOptions = {
16
- host: string;
17
- port: number;
18
- /** 默认可为 https(TLS),内网无证书场景可用 http */
19
- protocol?: "https" | "http";
20
- /** CA 证书文件路径(PEM) */
21
- caPath?: string;
22
- /** 客户端证书路径(PEM),与 keyPath 成对使用 */
23
- certPath?: string;
24
- /** 客户端私钥路径(PEM) */
25
- keyPath?: string;
26
- };
27
- /**
28
- * 在远程主机上拉取私有镜像时,传给 docker pull 的认证(与本地 docker login 类似)。
29
- * serveraddress 一般为 https://{registryHost}
30
- */
31
- export type RemotePullRegistryAuth = {
32
- username: string;
33
- password: string;
34
- /** 例如 https://registry.cn-hangzhou.aliyuncs.com */
35
- serveraddress: string;
36
- };
37
1
  /**
38
2
  * 单次后端部署流程的输入:路径、镜像名、仓库与远程连接均由调用方组装(例如来自 CLI 或配置文件)。
39
3
  */
40
4
  export type BackendDeployParams = {
41
- /** Dockerfile 路径(相对 cwd 或绝对路径) */
42
- dockerfilePath: string;
43
- /**
44
- * 构建上下文目录;缺省为 Dockerfile 所在目录。
45
- * 须包含 Dockerfile 中 COPY 所依赖的文件。
46
- */
47
- contextPath?: string;
48
- /**
49
- * 完整镜像引用(含 tag),如
50
- * registry.cn-hangzhou.aliyuncs.com/my-ns/my-app:v1.0.0
51
- */
52
- imageRef: string;
53
- registry: PrivateRegistryCredentials;
54
- remoteDocker: RemoteDockerTlsOptions;
55
- /**
56
- * 远程 docker pull 拉取私有镜像时是否需要认证。
57
- * 若镜像仓库可在远程主机上匿名拉取,可省略。
58
- */
59
- remotePullAuth?: RemotePullRegistryAuth;
60
- };
61
- export type BackendDeployStep = "resolveDockerfile" | "localBuild" | "registryPush" | "remotePull";
62
- export type BackendDeployResult = {
63
- ok: true;
64
- imageRef: string;
65
- dockerfileAbs: string;
66
- contextAbs: string;
67
- completedSteps: BackendDeployStep[];
5
+ image: string;
6
+ tag: string;
7
+ registryHost: string;
8
+ registryNamespace: string;
9
+ registryUser: string;
10
+ registryPassword: string;
11
+ remoteHost: string;
12
+ remotePort?: number;
13
+ remoteProtocol?: "https" | "http";
14
+ remoteSocketPath?: string;
15
+ remoteCaPath: string;
16
+ remoteCertPath: string;
17
+ remoteKeyPath: string;
18
+ envFilePath?: string;
19
+ containerPortsMappings?: string[];
68
20
  };
69
21
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,8CAA8C;AAC9C,MAAM,MAAM,0BAA0B,GAAG;IACvC,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,kCAAkC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,0BAA0B,CAAC;IACrC,YAAY,EAAE,sBAAsB,CAAC;IACrC;;;OAGG;IACH,cAAc,CAAC,EAAE,sBAAsB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,mBAAmB,GACnB,YAAY,GACZ,cAAc,GACd,YAAY,CAAC;AAEjB,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,iBAAiB,EAAE,CAAC;CACrC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;CACnC,CAAC"}
@@ -1,6 +1,3 @@
1
1
  "use strict";
2
- /**
3
- * 后端镜像部署相关类型(后续可由 .apm/apm.config.json 映射注入)。
4
- */
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-project-manage-cli",
3
- "version": "2.0.13",
3
+ "version": "2.0.14",
4
4
  "private": false,
5
5
  "description": "AI 项目管理 CLI 工具,结合飞书项目实现AI项目开发工作流",
6
6
  "main": "./dist/index.js",