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
@@ -1 +1 @@
1
- {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/commands/tag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/commands/tag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Bitbucket API 客户端
3
+ * 负责与 Bitbucket API 交互,获取 Pipeline 状态
4
+ */
5
+ import { PipelineStatus, WaitOptions } from "../types";
6
+ /**
7
+ * Bitbucket API 客户端类
8
+ */
9
+ export declare class BitbucketClient {
10
+ private client;
11
+ private username;
12
+ private token;
13
+ /**
14
+ * 构造函数
15
+ * @param username Bitbucket 用户名
16
+ * @param token Bitbucket API Token 或 App Password(明文)
17
+ */
18
+ constructor(username: string, token: string);
19
+ /**
20
+ * 测试连接
21
+ * @returns 连接是否成功
22
+ */
23
+ testConnection(): Promise<boolean>;
24
+ /**
25
+ * 获取指定 tag 的 Pipeline 列表
26
+ * @param workspace Bitbucket workspace
27
+ * @param repoSlug 仓库 slug
28
+ * @param tag Tag 名称
29
+ * @returns Pipeline 列表
30
+ */
31
+ getPipelinesByTag(workspace: string, repoSlug: string, tag: string): Promise<PipelineStatus[]>;
32
+ /**
33
+ * 获取 tag 对应的 commit hash
34
+ * @param workspace Bitbucket workspace
35
+ * @param repoSlug 仓库 slug
36
+ * @param tag Tag 名称
37
+ * @returns Commit hash
38
+ */
39
+ getTagCommit(workspace: string, repoSlug: string, tag: string): Promise<string>;
40
+ /**
41
+ * 获取 commit 的 build status
42
+ * @param workspace Bitbucket workspace
43
+ * @param repoSlug 仓库 slug
44
+ * @param commitHash Commit hash
45
+ * @returns Build status 列表
46
+ */
47
+ getCommitBuildStatus(workspace: string, repoSlug: string, commitHash: string): Promise<any[]>;
48
+ /**
49
+ * 获取分支的最新 commit hash
50
+ * @param workspace Bitbucket workspace
51
+ * @param repoSlug 仓库 slug
52
+ * @param branch 分支名称
53
+ * @returns Commit hash
54
+ */
55
+ getBranchLatestCommit(workspace: string, repoSlug: string, branch: string): Promise<string>;
56
+ /**
57
+ * 创建 tag(通过 API)
58
+ * @param workspace Bitbucket workspace
59
+ * @param repoSlug 仓库 slug
60
+ * @param tagName Tag 名称
61
+ * @param commitHash Commit hash(可选,不提供则使用当前 HEAD)
62
+ * @returns 创建的 tag 信息
63
+ */
64
+ createTag(workspace: string, repoSlug: string, tagName: string, commitHash?: string): Promise<any>;
65
+ /**
66
+ * 获取仓库的所有 tags
67
+ * @param workspace Bitbucket workspace
68
+ * @param repoSlug 仓库 slug
69
+ * @returns Tag 列表
70
+ */
71
+ getTags(workspace: string, repoSlug: string): Promise<any[]>;
72
+ /**
73
+ * 获取指定 Pipeline 的状态
74
+ * @param workspace Bitbucket workspace
75
+ * @param repoSlug 仓库 slug
76
+ * @param pipelineUuid Pipeline UUID
77
+ * @returns Pipeline 状态
78
+ */
79
+ getPipelineStatus(workspace: string, repoSlug: string, pipelineUuid: string): Promise<PipelineStatus>;
80
+ /**
81
+ * 等待 Pipeline 完成
82
+ * @param workspace Bitbucket workspace
83
+ * @param repoSlug 仓库 slug
84
+ * @param tag Tag 名称
85
+ * @param options 等待选项
86
+ * @returns 最终的 Pipeline 状态
87
+ */
88
+ waitForPipelineCompletion(workspace: string, repoSlug: string, tag: string, options?: WaitOptions): Promise<PipelineStatus>;
89
+ /**
90
+ * 休眠指定毫秒数
91
+ * @param ms 毫秒数
92
+ */
93
+ private sleep;
94
+ /**
95
+ * 处理错误
96
+ * @param error 错误对象
97
+ * @param message 错误消息
98
+ */
99
+ private handleError;
100
+ }
101
+ //# sourceMappingURL=bitbucket-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitbucket-client.d.ts","sourceRoot":"","sources":["../../../src/devops/api/bitbucket-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,cAAc,EACd,WAAW,EACZ,MAAM,UAAU,CAAC;AAkBlB;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;IAEtB;;;;OAIG;gBACS,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAmB3C;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAgDxC;;;;;;OAMG;IACG,iBAAiB,CACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,cAAc,EAAE,CAAC;IA4B5B;;;;;;OAMG;IACG,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC;IAYlB;;;;;;OAMG;IACG,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,GAAG,EAAE,CAAC;IA2BjB;;;;;;OAMG;IACG,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC;IAkBlB;;;;;;;OAOG;IACG,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,CAAC;IA2Bf;;;;;OAKG;IACG,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,GAAG,EAAE,CAAC;IAwBjB;;;;;;OAMG;IACG,iBAAiB,CACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,cAAc,CAAC;IAgB1B;;;;;;;OAOG;IACG,yBAAyB,CAC7B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,cAAc,CAAC;IAsD1B;;;OAGG;IACH,OAAO,CAAC,KAAK;IAIb;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAqBpB"}
@@ -0,0 +1,335 @@
1
+ "use strict";
2
+ /**
3
+ * Bitbucket API 客户端
4
+ * 负责与 Bitbucket API 交互,获取 Pipeline 状态
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.BitbucketClient = void 0;
11
+ const axios_1 = __importDefault(require("axios"));
12
+ const constants_1 = require("../constants");
13
+ /**
14
+ * Bitbucket API 客户端类
15
+ */
16
+ class BitbucketClient {
17
+ /**
18
+ * 构造函数
19
+ * @param username Bitbucket 用户名
20
+ * @param token Bitbucket API Token 或 App Password(明文)
21
+ */
22
+ constructor(username, token) {
23
+ this.username = username;
24
+ this.token = token;
25
+ // Bitbucket API Token 和 App Password 都使用 Basic Auth
26
+ // 用户名作为 username,token 作为 password
27
+ this.client = axios_1.default.create({
28
+ baseURL: constants_1.BITBUCKET_API_BASE_URL,
29
+ auth: {
30
+ username: this.username,
31
+ password: token,
32
+ },
33
+ headers: {
34
+ "Content-Type": "application/json",
35
+ },
36
+ timeout: 30000, // 30 秒超时
37
+ });
38
+ }
39
+ /**
40
+ * 测试连接
41
+ * @returns 连接是否成功
42
+ */
43
+ async testConnection() {
44
+ try {
45
+ // 尝试获取用户的 repositories 来测试连接
46
+ // 这个端点支持 API Token 和 App Password
47
+ const response = await this.client.get(`/user/permissions/repositories`);
48
+ console.log('Bitbucket 连接测试成功');
49
+ return true;
50
+ }
51
+ catch (error) {
52
+ if (axios_1.default.isAxiosError(error)) {
53
+ const axiosError = error;
54
+ if (axiosError.response) {
55
+ console.error('Bitbucket 连接失败:', {
56
+ status: axiosError.response.status,
57
+ statusText: axiosError.response.statusText,
58
+ data: axiosError.response.data,
59
+ });
60
+ // 401 表示认证失败
61
+ if (axiosError.response.status === 401) {
62
+ console.error('认证失败:请检查以下几点:');
63
+ console.error('1. 用户名是否正确(应该是 Bitbucket 邮箱或用户名)');
64
+ console.error('2. API Token 是否正确(应该以 ATAT 开头)');
65
+ console.error('3. API Token 是否已过期');
66
+ console.error('4. API Token 是否有正确的 scopes:');
67
+ console.error(' - account (或 account:read)');
68
+ console.error(' - repository (或 repository:read)');
69
+ console.error(' - pullrequest (或 pullrequest:read)');
70
+ }
71
+ // 403 表示权限不足
72
+ else if (axiosError.response.status === 403) {
73
+ console.error('权限不足:API Token 缺少必要的 scopes');
74
+ console.error('请确保 Token 有以下权限:');
75
+ console.error(' - account (或 account:read)');
76
+ console.error(' - repository (或 repository:read)');
77
+ console.error(' - pullrequest (或 pullrequest:read)');
78
+ }
79
+ }
80
+ else if (axiosError.request) {
81
+ console.error('网络错误:无法连接到 Bitbucket API');
82
+ }
83
+ else {
84
+ console.error('请求配置错误:', axiosError.message);
85
+ }
86
+ }
87
+ else {
88
+ console.error('未知错误:', error);
89
+ }
90
+ return false;
91
+ }
92
+ }
93
+ /**
94
+ * 获取指定 tag 的 Pipeline 列表
95
+ * @param workspace Bitbucket workspace
96
+ * @param repoSlug 仓库 slug
97
+ * @param tag Tag 名称
98
+ * @returns Pipeline 列表
99
+ */
100
+ async getPipelinesByTag(workspace, repoSlug, tag) {
101
+ try {
102
+ console.log(`查询 Pipeline: workspace=${workspace}, repo=${repoSlug}, tag=${tag}`);
103
+ const response = await this.client.get(`/repositories/${workspace}/${repoSlug}/pipelines/`, {
104
+ params: {
105
+ // 按 tag 过滤 - 使用 target.ref_name 而不是带引号的
106
+ 'target.ref_name': tag,
107
+ // 按创建时间倒序排序
108
+ sort: "-created_on",
109
+ },
110
+ });
111
+ console.log(`找到 ${response.data.values?.length || 0} 个 Pipeline`);
112
+ if (response.data.values && response.data.values.length > 0) {
113
+ console.log(`最新 Pipeline: ${response.data.values[0].uuid}, 状态: ${response.data.values[0].state.name}`);
114
+ }
115
+ return response.data.values || [];
116
+ }
117
+ catch (error) {
118
+ this.handleError(error, "获取 Pipeline 列表失败");
119
+ throw error;
120
+ }
121
+ }
122
+ /**
123
+ * 获取 tag 对应的 commit hash
124
+ * @param workspace Bitbucket workspace
125
+ * @param repoSlug 仓库 slug
126
+ * @param tag Tag 名称
127
+ * @returns Commit hash
128
+ */
129
+ async getTagCommit(workspace, repoSlug, tag) {
130
+ try {
131
+ const response = await this.client.get(`/repositories/${workspace}/${repoSlug}/refs/tags/${tag}`);
132
+ return response.data.target.hash;
133
+ }
134
+ catch (error) {
135
+ this.handleError(error, `获取 tag ${tag} 的 commit 失败`);
136
+ throw error;
137
+ }
138
+ }
139
+ /**
140
+ * 获取 commit 的 build status
141
+ * @param workspace Bitbucket workspace
142
+ * @param repoSlug 仓库 slug
143
+ * @param commitHash Commit hash
144
+ * @returns Build status 列表
145
+ */
146
+ async getCommitBuildStatus(workspace, repoSlug, commitHash) {
147
+ try {
148
+ console.log(`查询 commit ${commitHash.substring(0, 7)} 的 build status...`);
149
+ // 使用 /statuses 而不是 /statuses/build 来读取状态
150
+ // /statuses/build 是用于创建/更新状态,需要 OAuth
151
+ // /statuses 是用于读取所有状态,支持 API Token
152
+ const response = await this.client.get(`/repositories/${workspace}/${repoSlug}/commit/${commitHash}/statuses`);
153
+ const statuses = response.data.values || [];
154
+ console.log(`找到 ${statuses.length} 个 status`);
155
+ if (statuses.length > 0) {
156
+ statuses.forEach((status) => {
157
+ console.log(` - ${status.name || status.key}: ${status.state}`);
158
+ });
159
+ }
160
+ return statuses;
161
+ }
162
+ catch (error) {
163
+ this.handleError(error, "获取 commit build status 失败");
164
+ throw error;
165
+ }
166
+ }
167
+ /**
168
+ * 获取分支的最新 commit hash
169
+ * @param workspace Bitbucket workspace
170
+ * @param repoSlug 仓库 slug
171
+ * @param branch 分支名称
172
+ * @returns Commit hash
173
+ */
174
+ async getBranchLatestCommit(workspace, repoSlug, branch) {
175
+ try {
176
+ console.log(`获取分支 ${branch} 的最新 commit...`);
177
+ const response = await this.client.get(`/repositories/${workspace}/${repoSlug}/refs/branches/${branch}`);
178
+ const commitHash = response.data.target.hash;
179
+ console.log(`分支 ${branch} 最新 commit: ${commitHash.substring(0, 7)}`);
180
+ return commitHash;
181
+ }
182
+ catch (error) {
183
+ this.handleError(error, `获取分支 ${branch} 的最新 commit 失败`);
184
+ throw error;
185
+ }
186
+ }
187
+ /**
188
+ * 创建 tag(通过 API)
189
+ * @param workspace Bitbucket workspace
190
+ * @param repoSlug 仓库 slug
191
+ * @param tagName Tag 名称
192
+ * @param commitHash Commit hash(可选,不提供则使用当前 HEAD)
193
+ * @returns 创建的 tag 信息
194
+ */
195
+ async createTag(workspace, repoSlug, tagName, commitHash) {
196
+ try {
197
+ console.log(`创建 tag: ${tagName}${commitHash ? ` (commit: ${commitHash.substring(0, 7)})` : ''}`);
198
+ const payload = {
199
+ name: tagName,
200
+ target: {}
201
+ };
202
+ if (commitHash) {
203
+ payload.target.hash = commitHash;
204
+ }
205
+ const response = await this.client.post(`/repositories/${workspace}/${repoSlug}/refs/tags`, payload);
206
+ console.log(`Tag ${tagName} 创建成功`);
207
+ return response.data;
208
+ }
209
+ catch (error) {
210
+ this.handleError(error, `创建 tag ${tagName} 失败`);
211
+ throw error;
212
+ }
213
+ }
214
+ /**
215
+ * 获取仓库的所有 tags
216
+ * @param workspace Bitbucket workspace
217
+ * @param repoSlug 仓库 slug
218
+ * @returns Tag 列表
219
+ */
220
+ async getTags(workspace, repoSlug) {
221
+ try {
222
+ console.log(`获取仓库 tags: ${workspace}/${repoSlug}`);
223
+ const response = await this.client.get(`/repositories/${workspace}/${repoSlug}/refs/tags`, {
224
+ params: {
225
+ pagelen: 100, // 获取最近 100 个 tags
226
+ sort: '-target.date', // 按日期倒序
227
+ }
228
+ });
229
+ const tags = response.data.values || [];
230
+ console.log(`找到 ${tags.length} 个 tags`);
231
+ return tags;
232
+ }
233
+ catch (error) {
234
+ this.handleError(error, "获取 tags 失败");
235
+ throw error;
236
+ }
237
+ }
238
+ /**
239
+ * 获取指定 Pipeline 的状态
240
+ * @param workspace Bitbucket workspace
241
+ * @param repoSlug 仓库 slug
242
+ * @param pipelineUuid Pipeline UUID
243
+ * @returns Pipeline 状态
244
+ */
245
+ async getPipelineStatus(workspace, repoSlug, pipelineUuid) {
246
+ try {
247
+ // 移除 UUID 中的大括号(如果有)
248
+ const cleanUuid = pipelineUuid.replace(/[{}]/g, "");
249
+ const response = await this.client.get(`/repositories/${workspace}/${repoSlug}/pipelines/${cleanUuid}`);
250
+ return response.data;
251
+ }
252
+ catch (error) {
253
+ this.handleError(error, "获取 Pipeline 状态失败");
254
+ throw error;
255
+ }
256
+ }
257
+ /**
258
+ * 等待 Pipeline 完成
259
+ * @param workspace Bitbucket workspace
260
+ * @param repoSlug 仓库 slug
261
+ * @param tag Tag 名称
262
+ * @param options 等待选项
263
+ * @returns 最终的 Pipeline 状态
264
+ */
265
+ async waitForPipelineCompletion(workspace, repoSlug, tag, options) {
266
+ const pollInterval = options?.pollInterval || constants_1.BITBUCKET_POLL_INTERVAL;
267
+ const timeout = options?.timeout || constants_1.BITBUCKET_TIMEOUT;
268
+ const onProgress = options?.onProgress;
269
+ const startTime = Date.now();
270
+ // 首先获取该 tag 的 Pipeline
271
+ const pipelines = await this.getPipelinesByTag(workspace, repoSlug, tag);
272
+ if (pipelines.length === 0) {
273
+ throw new Error(`未找到 tag "${tag}" 的 Pipeline`);
274
+ }
275
+ // 获取最新的 Pipeline
276
+ const pipeline = pipelines[0];
277
+ const pipelineUuid = pipeline.uuid;
278
+ // 轮询 Pipeline 状态
279
+ while (true) {
280
+ // 检查超时
281
+ if (Date.now() - startTime > timeout) {
282
+ throw new Error(`Pipeline 监听超时(${timeout / 1000}秒),tag: ${tag}`);
283
+ }
284
+ // 获取当前状态
285
+ const status = await this.getPipelineStatus(workspace, repoSlug, pipelineUuid);
286
+ // 调用进度回调
287
+ if (onProgress) {
288
+ onProgress(status);
289
+ }
290
+ // 检查是否完成
291
+ const stateName = status.state.name;
292
+ if (stateName === "SUCCESSFUL" ||
293
+ stateName === "FAILED" ||
294
+ stateName === "STOPPED") {
295
+ return status;
296
+ }
297
+ // 等待下一次轮询
298
+ await this.sleep(pollInterval);
299
+ }
300
+ }
301
+ /**
302
+ * 休眠指定毫秒数
303
+ * @param ms 毫秒数
304
+ */
305
+ sleep(ms) {
306
+ return new Promise((resolve) => setTimeout(resolve, ms));
307
+ }
308
+ /**
309
+ * 处理错误
310
+ * @param error 错误对象
311
+ * @param message 错误消息
312
+ */
313
+ handleError(error, message) {
314
+ if (axios_1.default.isAxiosError(error)) {
315
+ const axiosError = error;
316
+ if (axiosError.response) {
317
+ // 服务器返回错误响应
318
+ console.error(`${message}: ${axiosError.response.status} - ${JSON.stringify(axiosError.response.data)}`);
319
+ }
320
+ else if (axiosError.request) {
321
+ // 请求已发送但没有收到响应
322
+ console.error(`${message}: 网络错误,无法连接到 Bitbucket API`);
323
+ }
324
+ else {
325
+ // 请求配置错误
326
+ console.error(`${message}: ${axiosError.message}`);
327
+ }
328
+ }
329
+ else {
330
+ console.error(`${message}:`, error);
331
+ }
332
+ }
333
+ }
334
+ exports.BitbucketClient = BitbucketClient;
335
+ //# sourceMappingURL=bitbucket-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitbucket-client.js","sourceRoot":"","sources":["../../../src/devops/api/bitbucket-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Jenkins API 客户端
3
+ * 负责与 Jenkins API 交互,触发构建和获取构建状态
4
+ */
5
+ import { JenkinsBuildInfo, WaitOptions } from "../types";
6
+ /**
7
+ * Jenkins 队列项响应
8
+ */
9
+ interface QueueItemResponse {
10
+ id: number;
11
+ executable?: {
12
+ number: number;
13
+ url: string;
14
+ };
15
+ why?: string;
16
+ blocked?: boolean;
17
+ buildable?: boolean;
18
+ stuck?: boolean;
19
+ }
20
+ /**
21
+ * Jenkins API 客户端类
22
+ */
23
+ export declare class JenkinsClient {
24
+ private client;
25
+ private baseUrl;
26
+ private username;
27
+ private apiToken;
28
+ /**
29
+ * 构造函数
30
+ * @param baseUrl Jenkins 服务器地址
31
+ * @param username Jenkins 用户名
32
+ * @param apiToken Jenkins API Token(明文)
33
+ */
34
+ constructor(baseUrl: string, username: string, apiToken: string);
35
+ /**
36
+ * 测试连接
37
+ * @returns 连接是否成功
38
+ */
39
+ testConnection(): Promise<boolean>;
40
+ /**
41
+ * 触发构建
42
+ * @param jobName Job 名称(可以包含文件夹路径,如 "folder/job-name")
43
+ * @param parameters 构建参数
44
+ * @returns 队列 ID
45
+ */
46
+ triggerBuild(jobName: string, parameters: Record<string, string>): Promise<string>;
47
+ /**
48
+ * 获取队列项信息
49
+ * @param queueId 队列 ID
50
+ * @returns 队列项信息
51
+ */
52
+ getQueueItem(queueId: string): Promise<QueueItemResponse>;
53
+ /**
54
+ * 获取构建信息
55
+ * @param jobName Job 名称(可以包含文件夹路径,如 "folder/job-name")
56
+ * @param buildNumber 构建号
57
+ * @returns 构建信息
58
+ */
59
+ getBuildInfo(jobName: string, buildNumber: number): Promise<JenkinsBuildInfo>;
60
+ /**
61
+ * 等待构建完成
62
+ * @param jobName Job 名称
63
+ * @param buildNumber 构建号
64
+ * @param options 等待选项
65
+ * @returns 最终的构建信息
66
+ */
67
+ waitForBuildCompletion(jobName: string, buildNumber: number, options?: WaitOptions): Promise<JenkinsBuildInfo>;
68
+ /**
69
+ * 等待队列项变成构建
70
+ * @param queueId 队列 ID
71
+ * @param timeout 超时时间(毫秒)
72
+ * @returns 构建号
73
+ */
74
+ waitForQueueToBuild(queueId: string, timeout?: number): Promise<number>;
75
+ /**
76
+ * 触发构建并等待完成
77
+ * @param jobName Job 名称
78
+ * @param parameters 构建参数
79
+ * @param options 等待选项
80
+ * @returns 最终的构建信息
81
+ */
82
+ triggerAndWait(jobName: string, parameters: Record<string, string>, options?: WaitOptions): Promise<JenkinsBuildInfo>;
83
+ /**
84
+ * 休眠指定毫秒数
85
+ * @param ms 毫秒数
86
+ */
87
+ private sleep;
88
+ /**
89
+ * 处理错误
90
+ * @param error 错误对象
91
+ * @param message 错误消息
92
+ */
93
+ private handleError;
94
+ }
95
+ export {};
96
+ //# sourceMappingURL=jenkins-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jenkins-client.d.ts","sourceRoot":"","sources":["../../../src/devops/api/jenkins-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,gBAAgB,EAChB,WAAW,EACZ,MAAM,UAAU,CAAC;AAMlB;;GAEG;AACH,UAAU,iBAAiB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE;QACX,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAgBD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAmB/D;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAUxC;;;;;OAKG;IACG,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;IAwClB;;;;OAIG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAY/D;;;;;OAKG;IACG,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC;IAuB5B;;;;;;OAMG;IACG,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,CAAC;IAkC5B;;;;;OAKG;IACG,mBAAmB,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAc,GACtB,OAAO,CAAC,MAAM,CAAC;IA4BlB;;;;;;OAMG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,CAAC;IAW5B;;;OAGG;IACH,OAAO,CAAC,KAAK;IAIb;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAqBpB"}