@jira-deploy/core 1.0.1 → 1.0.3
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/constants/environments.js +1 -1
- package/constants/field-ids.js +3 -0
- package/dry-run.js +4 -0
- package/jira-client.js +13 -0
- package/package.json +1 -1
- package/tools/cd.js +24 -2
- package/tools/grayrelease.js +781 -0
- package/tools/helpers.js +4 -1
- package/tools/index.js +214 -9
- package/tools/library.js +3 -2
- package/tools/workflows.js +239 -0
- package/tools.test.js +725 -13
|
@@ -22,7 +22,7 @@ export const DEPT_CODES = {
|
|
|
22
22
|
export const SUPPORTED_ENVS = {
|
|
23
23
|
library: ['dev', 'stg', 'uat', 'prd'],
|
|
24
24
|
ci: ['dev', 'stg'],
|
|
25
|
-
cd: ['stg', 'uat', 'prd/dr', 'prd', 'dr'],
|
|
25
|
+
cd: ['dev', 'stg', 'uat', 'prd/dr', 'prd', 'dr'],
|
|
26
26
|
grayRelease: ['dev', 'stg', 'uat'],
|
|
27
27
|
};
|
|
28
28
|
|
package/constants/field-ids.js
CHANGED
|
@@ -60,4 +60,7 @@ export const GRAY_RELEASE_FIELD_IDS = {
|
|
|
60
60
|
grayReleaseVersion: 'customfield_14700',
|
|
61
61
|
clusterList: 'customfield_14701',
|
|
62
62
|
grayReleaseNotes: 'customfield_14511',
|
|
63
|
+
// Field names resolved to customfield IDs at runtime.
|
|
64
|
+
buildResult: 'CID_build_result',
|
|
65
|
+
deployResult: 'CID_deploy_result',
|
|
63
66
|
};
|
package/dry-run.js
CHANGED
|
@@ -24,15 +24,19 @@
|
|
|
24
24
|
* node src/dry-run.js create_ci_ticket '{"systemCode":"IBK","relatesTo":["CID-1708"]}'
|
|
25
25
|
* node src/dry-run.js create_ci_ticket '{"systemCode":"IBK","relatesTo":["CID-1178","CID-1182"]}'
|
|
26
26
|
* node src/dry-run.js build_ticket '{"issueKey":"CID-1709"}' --live
|
|
27
|
+
* node src/dry-run.js wait_to_dev '{"issueKey":"CID-1709"}' --live
|
|
27
28
|
* node src/dry-run.js wait_to_stg '{"issueKey":"CID-1709"}' --live
|
|
28
29
|
*
|
|
29
30
|
* # CD 票
|
|
31
|
+
* node src/dry-run.js create_cd_ticket '{"systemCode":"IBK","environment":"dev","ciTicket":"CID-1709"}'
|
|
30
32
|
* node src/dry-run.js create_cd_ticket '{"systemCode":"IBK","environment":"stg","ciTicket":"CID-1709"}'
|
|
31
33
|
* node src/dry-run.js create_cd_ticket '{"systemCode":"CWA","environment":"prd","ciTicket":"CID-1709","metaTest":true}'
|
|
32
34
|
* node src/dry-run.js create_cd_ticket '{"systemCode":"IBK","environment":"prd","ciTicket":"CID-1709","metaTest":true}' --live
|
|
35
|
+
* node src/dry-run.js prepare_cd_deployment '{"issueKey":"CID-1710","environment":"dev"}' --live
|
|
33
36
|
* node src/dry-run.js prepare_cd_deployment '{"issueKey":"CID-1710","environment":"stg"}' --live
|
|
34
37
|
*
|
|
35
38
|
* # Deployment sub-task 觸發(新)
|
|
39
|
+
* node src/dry-run.js trigger_deployment '{"cdIssueKey":"CID-1710","environment":"dev"}' --live
|
|
36
40
|
* node src/dry-run.js trigger_deployment '{"cdIssueKey":"CID-1710","environment":"stg"}' --live
|
|
37
41
|
* node src/dry-run.js trigger_deployment '{"cdIssueKey":"CID-1713","environment":"uat"}' --live
|
|
38
42
|
* node src/dry-run.js trigger_deployment '{"cdIssueKey":"CID-1716","environment":"stg","applyForClose":true}' --live
|
package/jira-client.js
CHANGED
|
@@ -21,6 +21,7 @@ export class JiraClient {
|
|
|
21
21
|
},
|
|
22
22
|
});
|
|
23
23
|
this.dryRun = DRY_RUN;
|
|
24
|
+
this.fieldIdByName = new Map();
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
// 建立 issue
|
|
@@ -93,6 +94,18 @@ export class JiraClient {
|
|
|
93
94
|
return res.data.fields;
|
|
94
95
|
}
|
|
95
96
|
|
|
97
|
+
async getFieldIdByName(fieldName) {
|
|
98
|
+
if (this.fieldIdByName.has(fieldName)) {
|
|
99
|
+
return this.fieldIdByName.get(fieldName);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const res = await this.http.get('/field');
|
|
103
|
+
const field = (res.data ?? []).find((item) => item.id === fieldName || item.name === fieldName);
|
|
104
|
+
const fieldId = field?.id ?? fieldName;
|
|
105
|
+
this.fieldIdByName.set(fieldName, fieldId);
|
|
106
|
+
return fieldId;
|
|
107
|
+
}
|
|
108
|
+
|
|
96
109
|
// 依 ID 直接切換狀態(不查名稱,適合 race condition 處理)
|
|
97
110
|
async transitionById(issueKey, transitionId) {
|
|
98
111
|
if (this.dryRun) {
|
package/package.json
CHANGED
package/tools/cd.js
CHANGED
|
@@ -30,7 +30,7 @@ export function getCDToolDefinitions() {
|
|
|
30
30
|
description: '建立 CD Deploy 上版單。專用工具,提前驗證必填欄位和叢集配置',
|
|
31
31
|
inputSchema: {
|
|
32
32
|
type: 'object',
|
|
33
|
-
required: ['systemCode', '
|
|
33
|
+
required: ['systemCode', 'environment'],
|
|
34
34
|
properties: {
|
|
35
35
|
systemCode: {
|
|
36
36
|
type: 'string',
|
|
@@ -56,6 +56,26 @@ export function getCDToolDefinitions() {
|
|
|
56
56
|
description:
|
|
57
57
|
'關聯的 CI 單 issue key,例如 CID-1677。自動:① 取 release_version 填入 summary/CID_deploy_version ② 查 CI 所有 relates Library 單,各自取 CID_branch 找 LBPRJ 版本頁 → 加 Web Link',
|
|
58
58
|
},
|
|
59
|
+
linkedCiKey: {
|
|
60
|
+
type: 'string',
|
|
61
|
+
description: '關聯的 CI 單 issue key;等同 ciTicket,保留給 agent/CLI workflow 使用',
|
|
62
|
+
},
|
|
63
|
+
clusterDeploy: {
|
|
64
|
+
type: 'string',
|
|
65
|
+
description: '(選填) 逗號分隔的 cluster 清單;不填時依 systemCode/environment 自動推導',
|
|
66
|
+
},
|
|
67
|
+
moduleChild: {
|
|
68
|
+
type: 'string',
|
|
69
|
+
description: '(選填) 模組 child 名稱;不填時預設同 systemCode 小寫',
|
|
70
|
+
},
|
|
71
|
+
restartOnly: {
|
|
72
|
+
type: 'boolean',
|
|
73
|
+
description: '(選填) 是否只重啟不部署',
|
|
74
|
+
},
|
|
75
|
+
extraVars: {
|
|
76
|
+
type: 'string',
|
|
77
|
+
description: '(選填) 自訂部署 extra vars JSON 字串;不填時依 system/module/env 自動生成',
|
|
78
|
+
},
|
|
59
79
|
metaTest: {
|
|
60
80
|
type: 'boolean',
|
|
61
81
|
description:
|
|
@@ -254,7 +274,7 @@ export async function handleCreateCDTicket(args, {jira, notifier}) {
|
|
|
254
274
|
|
|
255
275
|
await notifier.notify(
|
|
256
276
|
issue.key,
|
|
257
|
-
`CD Deploy 單已建立。系統: ${
|
|
277
|
+
`CD Deploy 單已建立。系統: ${normalizedArgs.systemCode}, 環境: ${normalizedArgs.environment}, Cluster: ${serverList.join(',')}`,
|
|
258
278
|
);
|
|
259
279
|
return ok({
|
|
260
280
|
issueKey: issue.key,
|
|
@@ -263,6 +283,8 @@ export async function handleCreateCDTicket(args, {jira, notifier}) {
|
|
|
263
283
|
type: 'CD Deploy',
|
|
264
284
|
system: normalizedArgs.systemCode,
|
|
265
285
|
environment: normalizedArgs.environment,
|
|
286
|
+
clusterDeploy: serverList,
|
|
287
|
+
isClusterDeploy: normalizedArgs.isClusterDeploy,
|
|
266
288
|
});
|
|
267
289
|
} catch (err) {
|
|
268
290
|
return error(`無法建立 CD 單: ${err.message}`);
|