long-git-cli 1.0.12 → 1.0.13

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 (71) hide show
  1. package/README.md +148 -0
  2. package/dist/commands/config.d.ts +9 -0
  3. package/dist/commands/config.d.ts.map +1 -0
  4. package/dist/commands/config.js +33 -0
  5. package/dist/commands/config.js.map +1 -0
  6. package/dist/commands/deploy.d.ts +14 -0
  7. package/dist/commands/deploy.d.ts.map +1 -0
  8. package/dist/commands/deploy.js +342 -0
  9. package/dist/commands/deploy.js.map +1 -0
  10. package/dist/commands/tag.d.ts.map +1 -1
  11. package/dist/commands/tag.js +9 -7
  12. package/dist/commands/tag.js.map +1 -1
  13. package/dist/devops/api/bitbucket-client.d.ts +101 -0
  14. package/dist/devops/api/bitbucket-client.d.ts.map +1 -0
  15. package/dist/devops/api/bitbucket-client.js +335 -0
  16. package/dist/devops/api/bitbucket-client.js.map +1 -0
  17. package/dist/devops/api/jenkins-client.d.ts +96 -0
  18. package/dist/devops/api/jenkins-client.d.ts.map +1 -0
  19. package/dist/devops/api/jenkins-client.js +240 -0
  20. package/dist/devops/api/jenkins-client.js.map +1 -0
  21. package/dist/devops/config/config-manager.d.ts +96 -0
  22. package/dist/devops/config/config-manager.d.ts.map +1 -0
  23. package/dist/devops/config/config-manager.js +331 -0
  24. package/dist/devops/config/config-manager.js.map +1 -0
  25. package/dist/devops/config/encryption.d.ts +39 -0
  26. package/dist/devops/config/encryption.d.ts.map +1 -0
  27. package/dist/devops/config/encryption.js +133 -0
  28. package/dist/devops/config/encryption.js.map +1 -0
  29. package/dist/devops/config/storage.d.ts +37 -0
  30. package/dist/devops/config/storage.d.ts.map +1 -0
  31. package/dist/devops/config/storage.js +132 -0
  32. package/dist/devops/config/storage.js.map +1 -0
  33. package/dist/devops/constants.d.ts +51 -0
  34. package/dist/devops/constants.d.ts.map +1 -0
  35. package/dist/devops/constants.js +95 -0
  36. package/dist/devops/constants.js.map +1 -0
  37. package/dist/devops/deployer/full-deployer.d.ts +77 -0
  38. package/dist/devops/deployer/full-deployer.d.ts.map +1 -0
  39. package/dist/devops/deployer/full-deployer.js +221 -0
  40. package/dist/devops/deployer/full-deployer.js.map +1 -0
  41. package/dist/devops/deployer/jenkins-deployer.d.ts +55 -0
  42. package/dist/devops/deployer/jenkins-deployer.d.ts.map +1 -0
  43. package/dist/devops/deployer/jenkins-deployer.js +110 -0
  44. package/dist/devops/deployer/jenkins-deployer.js.map +1 -0
  45. package/dist/devops/monitor/pipeline-monitor.d.ts +48 -0
  46. package/dist/devops/monitor/pipeline-monitor.d.ts.map +1 -0
  47. package/dist/devops/monitor/pipeline-monitor.js +170 -0
  48. package/dist/devops/monitor/pipeline-monitor.js.map +1 -0
  49. package/dist/devops/test-ui.d.ts +6 -0
  50. package/dist/devops/test-ui.d.ts.map +1 -0
  51. package/dist/devops/test-ui.js +31 -0
  52. package/dist/devops/test-ui.js.map +1 -0
  53. package/dist/devops/types.d.ts +138 -0
  54. package/dist/devops/types.d.ts.map +1 -0
  55. package/dist/devops/types.js +20 -0
  56. package/dist/devops/types.js.map +1 -0
  57. package/dist/devops/ui/server.d.ts +53 -0
  58. package/dist/devops/ui/server.d.ts.map +1 -0
  59. package/dist/devops/ui/server.js +1310 -0
  60. package/dist/devops/ui/server.js.map +1 -0
  61. package/dist/index.js +31 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/utils/message.d.ts +0 -2
  64. package/dist/utils/message.d.ts.map +1 -1
  65. package/dist/utils/message.js +7 -15
  66. package/dist/utils/message.js.map +1 -1
  67. package/dist/utils/tag.d.ts +65 -6
  68. package/dist/utils/tag.d.ts.map +1 -1
  69. package/dist/utils/tag.js +148 -14
  70. package/dist/utils/tag.js.map +1 -1
  71. package/package.json +19 -2
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * Web UI 测试脚本
4
+ * 用于测试 Web UI 服务器
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const server_1 = require("./ui/server");
8
+ async function main() {
9
+ console.log("🧪 启动 Web UI 测试...\n");
10
+ const server = new server_1.WebUIServer();
11
+ try {
12
+ /** 启动服务器 */
13
+ await server.start();
14
+ /** 打开浏览器 */
15
+ await server.openBrowser();
16
+ console.log("\nWeb UI 测试服务器已启动");
17
+ console.log("按 Ctrl+C 停止服务器\n");
18
+ /** 监听退出信号 */
19
+ process.on("SIGINT", async () => {
20
+ console.log("\n\n🛑 正在关闭服务器...");
21
+ await server.stop();
22
+ process.exit(0);
23
+ });
24
+ }
25
+ catch (error) {
26
+ console.error("启动失败:", error);
27
+ process.exit(1);
28
+ }
29
+ }
30
+ main();
31
+ //# sourceMappingURL=test-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-ui.js","sourceRoot":"","sources":["../../src/devops/test-ui.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,wCAA0C;AAE1C,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAEpC,MAAM,MAAM,GAAG,IAAI,oBAAW,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,YAAY;QACZ,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAErB,YAAY;QACZ,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAE3B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEhC,aAAa;QACb,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * 自动化部署功能的类型定义
3
+ */
4
+ /**
5
+ * 部署配置
6
+ */
7
+ export interface DeployConfig {
8
+ version: string;
9
+ projects: {
10
+ [projectPath: string]: ProjectConfig;
11
+ };
12
+ bitbucket: BitbucketConfig;
13
+ jenkins: JenkinsConfig[];
14
+ }
15
+ /**
16
+ * 项目配置
17
+ */
18
+ export interface ProjectConfig {
19
+ name: string;
20
+ path: string;
21
+ repository: {
22
+ workspace: string;
23
+ repoSlug: string;
24
+ };
25
+ jenkinsInstance: "app" | "pcalpha";
26
+ tagFormat: string;
27
+ environments: {
28
+ [env: string]: EnvironmentConfig;
29
+ };
30
+ }
31
+ /**
32
+ * 环境配置
33
+ */
34
+ export interface EnvironmentConfig {
35
+ /** 环境名称: 'test-01', 'test-02', 'test-03', 'test-04', 'uat' */
36
+ name: string;
37
+ /** Tag 格式: 'test-v00.00.0000', 'uat-v00.00.0000' */
38
+ tagFormat: string;
39
+ /** Jenkins Job 名称 */
40
+ jenkinsJobName: string;
41
+ /** Jenkins Tag 参数名 */
42
+ jenkinsTagParameter: string;
43
+ /** 部署状态(可选) */
44
+ deployStatus?: {
45
+ status: 'building' | 'deploying' | 'success' | 'failed';
46
+ tagName: string;
47
+ step: 'pipeline' | 'jenkins' | 'completed' | 'unknown';
48
+ startTime?: string;
49
+ completedTime?: string;
50
+ failedTime?: string;
51
+ jenkinsBuildNumber?: number;
52
+ jenkinsBuildUrl?: string;
53
+ error?: string;
54
+ lastUpdated?: string;
55
+ };
56
+ }
57
+ /**
58
+ * Bitbucket 配置
59
+ */
60
+ export interface BitbucketConfig {
61
+ username: string;
62
+ /** @deprecated 使用 apiTokenHash 代替 (2026年6月9日前仍可用) */
63
+ appPasswordHash?: string;
64
+ /** 加密后的 API Token (推荐使用) */
65
+ apiTokenHash?: string;
66
+ }
67
+ /**
68
+ * Jenkins 配置
69
+ */
70
+ export interface JenkinsConfig {
71
+ type: "app" | "pcalpha";
72
+ url: string;
73
+ username: string;
74
+ /** 加密后的 API Token */
75
+ apiTokenHash: string;
76
+ }
77
+ /**
78
+ * Pipeline 状态
79
+ */
80
+ export interface PipelineStatus {
81
+ uuid: string;
82
+ state: {
83
+ name: "PENDING" | "IN_PROGRESS" | "SUCCESSFUL" | "FAILED" | "STOPPED";
84
+ result?: {
85
+ name: string;
86
+ };
87
+ };
88
+ created_on: string;
89
+ completed_on?: string;
90
+ target: {
91
+ /** tag 名称 */
92
+ ref_name: string;
93
+ };
94
+ }
95
+ /**
96
+ * 等待选项
97
+ */
98
+ export interface WaitOptions {
99
+ /** 轮询间隔(毫秒),默认 15 秒 */
100
+ pollInterval?: number;
101
+ /** 超时时间(毫秒),默认 30 分钟 */
102
+ timeout?: number;
103
+ /** 进度回调 */
104
+ onProgress?: (status: PipelineStatus) => void;
105
+ }
106
+ /**
107
+ * Jenkins 构建信息
108
+ */
109
+ export interface JenkinsBuildInfo {
110
+ number: number;
111
+ url: string;
112
+ result: "SUCCESS" | "FAILURE" | "ABORTED" | "UNSTABLE" | null;
113
+ building: boolean;
114
+ duration: number;
115
+ timestamp: number;
116
+ }
117
+ /**
118
+ * 部署选项
119
+ */
120
+ export interface DeployOptions {
121
+ tag?: string;
122
+ environment?: string;
123
+ project?: string;
124
+ skipBuild?: boolean;
125
+ }
126
+ /**
127
+ * 错误代码枚举
128
+ */
129
+ export declare enum ErrorCode {
130
+ CONFIG_MISSING = "CONFIG_MISSING",
131
+ CONFIG_INVALID = "CONFIG_INVALID",
132
+ AUTH_FAILED = "AUTH_FAILED",
133
+ PIPELINE_FAILED = "PIPELINE_FAILED",
134
+ PIPELINE_TIMEOUT = "PIPELINE_TIMEOUT",
135
+ DEPLOYMENT_FAILED = "DEPLOYMENT_FAILED",
136
+ NETWORK_ERROR = "NETWORK_ERROR"
137
+ }
138
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/devops/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * 自动化部署功能的类型定义
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ErrorCode = void 0;
7
+ /**
8
+ * 错误代码枚举
9
+ */
10
+ var ErrorCode;
11
+ (function (ErrorCode) {
12
+ ErrorCode["CONFIG_MISSING"] = "CONFIG_MISSING";
13
+ ErrorCode["CONFIG_INVALID"] = "CONFIG_INVALID";
14
+ ErrorCode["AUTH_FAILED"] = "AUTH_FAILED";
15
+ ErrorCode["PIPELINE_FAILED"] = "PIPELINE_FAILED";
16
+ ErrorCode["PIPELINE_TIMEOUT"] = "PIPELINE_TIMEOUT";
17
+ ErrorCode["DEPLOYMENT_FAILED"] = "DEPLOYMENT_FAILED";
18
+ ErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
19
+ })(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
20
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/devops/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAqIH;;GAEG;AACH,IAAY,SAQX;AARD,WAAY,SAAS;IACnB,8CAAiC,CAAA;IACjC,8CAAiC,CAAA;IACjC,wCAA2B,CAAA;IAC3B,gDAAmC,CAAA;IACnC,kDAAqC,CAAA;IACrC,oDAAuC,CAAA;IACvC,4CAA+B,CAAA;AACjC,CAAC,EARW,SAAS,yBAAT,SAAS,QAQpB"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Web UI 服务器
3
+ * 提供配置管理的 Web 界面
4
+ */
5
+ import KoaRouter from "@koa/router";
6
+ import { ConfigManager } from "../config/config-manager";
7
+ type Router = InstanceType<typeof KoaRouter>;
8
+ /**
9
+ * Web UI 服务器类
10
+ */
11
+ export declare class WebUIServer {
12
+ private app;
13
+ private router;
14
+ private port;
15
+ private host;
16
+ private server;
17
+ private configManager;
18
+ constructor(configManager?: ConfigManager, port?: number, host?: string);
19
+ /**
20
+ * 配置中间件
21
+ */
22
+ private setupMiddleware;
23
+ /**
24
+ * 配置路由
25
+ */
26
+ private setupRoutes;
27
+ /**
28
+ * 启动服务器
29
+ */
30
+ start(): Promise<void>;
31
+ /**
32
+ * 停止服务器
33
+ */
34
+ stop(): Promise<void>;
35
+ /**
36
+ * 打开浏览器
37
+ */
38
+ openBrowser(): Promise<void>;
39
+ /**
40
+ * 获取路由器实例(用于添加更多路由)
41
+ */
42
+ getRouter(): Router;
43
+ /**
44
+ * 解析 Git 仓库信息
45
+ */
46
+ private parseGitRepo;
47
+ /**
48
+ * 选择文件夹(使用系统对话框)
49
+ */
50
+ private selectFolder;
51
+ }
52
+ export {};
53
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/devops/ui/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,SAAS,MAAM,aAAa,CAAC;AAMpC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIzD,KAAK,MAAM,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;AAE7C;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,aAAa,CAAgB;gBAGnC,aAAa,CAAC,EAAE,aAAa,EAC7B,IAAI,GAAE,MAAoB,EAC1B,IAAI,GAAE,MAAoB;IAY5B;;OAEG;IACH,OAAO,CAAC,eAAe;IA+BvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAixCnB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlC;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;YACW,YAAY;IA0D1B;;OAEG;YACW,YAAY;CA+C3B"}