@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.
@@ -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
 
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jira-deploy/core",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "repository": {
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', 'ciTicket'],
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 單已建立。系統: ${args.systemCode}, 環境: ${args.environment}, Cluster: ${args.clusterDeploy}`,
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}`);