@salesforce/plugin-devops-center 2.0.0 → 2.0.1
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/README.md +150 -31
- package/lib/commands/devops/pipeline/stage/update.d.ts +19 -0
- package/lib/commands/devops/pipeline/stage/update.js +66 -0
- package/lib/commands/devops/pipeline/stage/update.js.map +1 -0
- package/lib/commands/devops/promote.d.ts +5 -0
- package/lib/commands/devops/promote.js +49 -3
- package/lib/commands/devops/promote.js.map +1 -1
- package/lib/commands/devops/promotion/complete.d.ts +1 -1
- package/lib/commands/devops/promotion/complete.js +1 -1
- package/lib/commands/devops/promotion/complete.js.map +1 -1
- package/lib/commands/devops/promotion/validate.d.ts +21 -0
- package/lib/commands/devops/promotion/validate.js +137 -0
- package/lib/commands/devops/promotion/validate.js.map +1 -0
- package/lib/commands/devops/stage/branch/delete.d.ts +15 -0
- package/lib/commands/devops/stage/branch/delete.js +107 -0
- package/lib/commands/devops/stage/branch/delete.js.map +1 -0
- package/lib/commands/devops/work-item/prepare.js +0 -3
- package/lib/commands/devops/work-item/prepare.js.map +1 -1
- package/lib/utils/addPipelineStage.js +1 -0
- package/lib/utils/addPipelineStage.js.map +1 -1
- package/lib/utils/createPipeline.js +24 -12
- package/lib/utils/createPipeline.js.map +1 -1
- package/lib/utils/deleteStageBranch.d.ts +22 -0
- package/lib/utils/deleteStageBranch.js +44 -0
- package/lib/utils/deleteStageBranch.js.map +1 -0
- package/lib/utils/pipelineUtils.d.ts +9 -0
- package/lib/utils/pipelineUtils.js +32 -0
- package/lib/utils/pipelineUtils.js.map +1 -1
- package/lib/utils/prepareWorkItem.d.ts +1 -1
- package/lib/utils/prepareWorkItem.js +4 -5
- package/lib/utils/prepareWorkItem.js.map +1 -1
- package/lib/utils/{deployStage.d.ts → promotionUtils.d.ts} +24 -0
- package/lib/utils/{deployStage.js → promotionUtils.js} +65 -1
- package/lib/utils/promotionUtils.js.map +1 -0
- package/lib/utils/soqlUtils.d.ts +5 -0
- package/lib/utils/soqlUtils.js +7 -0
- package/lib/utils/soqlUtils.js.map +1 -1
- package/messages/devops.pipeline.stage.update.md +25 -0
- package/messages/devops.promote.md +16 -0
- package/messages/devops.promotion.complete.md +3 -3
- package/messages/devops.promotion.validate.md +64 -0
- package/messages/devops.stage.branch.delete.md +37 -0
- package/npm-shrinkwrap.json +2 -2
- package/oclif.manifest.json +294 -56
- package/package.json +3 -3
- package/schemas/devops-pipeline-stage-update.json +22 -0
- package/schemas/devops-promote.json +38 -0
- package/schemas/devops-promotion-validate.json +66 -0
- package/schemas/devops-stage-branch-delete.json +47 -0
- package/lib/utils/deployStage.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipelineUtils.js","sourceRoot":"","sources":["../../src/utils/pipelineUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,UAAsB,EAAE,SAAiB;IACrF,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,+EAA+E,SAAS,WAAW,CAAC;IAClH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAmC,KAAK,CAAC,CAAC;IAC/E,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAAsB,EAAE,UAAkB;IAClF,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,oHAAoH,UAAU,GAAG,CAAC;IACrJ,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,KAAK,CAAsB,UAAU,CAAC,CAAC;IAC5E,OAAO,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA6B;IAC/D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC,CAAC;IACnG,MAAM,aAAa,GAAa,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9F,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACjD,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,cAAkC,EAClC,MAA6B;IAE7B,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC;QAC5D,OAAO,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,MAA6B,EAC7B,OAA2B;IAE3B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAsC;IAC3E,OAAO,KAAK,EAAE,0BAA0B,EAAE,IAAI,IAAI,SAAS,CAAC;AAC9D,CAAC"}
|
|
1
|
+
{"version":3,"file":"pipelineUtils.js","sourceRoot":"","sources":["../../src/utils/pipelineUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,11 +22,10 @@ import { validateSalesforceId } from './soqlUtils.js';
|
|
|
22
22
|
export async function prepareWorkItem(params) {
|
|
23
23
|
const { connection, pipelineId, workItemId, sourceStageId, targetStageId } = params;
|
|
24
24
|
const path = `/services/data/v${connection.getApiVersion()}/connect/devops/pipelines/${pipelineId}/promote/oneoff/prepare`;
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
sourceStageId
|
|
28
|
-
|
|
29
|
-
});
|
|
25
|
+
const payload = { selectedWorkItemId: workItemId, targetStageId };
|
|
26
|
+
if (sourceStageId)
|
|
27
|
+
payload.sourceStageId = sourceStageId;
|
|
28
|
+
const body = JSON.stringify(payload);
|
|
30
29
|
const data = await connection.request({
|
|
31
30
|
method: 'POST',
|
|
32
31
|
url: path,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareWorkItem.js","sourceRoot":"","sources":["../../src/utils/prepareWorkItem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAwBtD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA6B;IACjE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAEpF,MAAM,IAAI,GAAG,mBAAmB,UAAU,CAAC,aAAa,EAAE,6BAA6B,UAAU,yBAAyB,CAAC;IAC3H,MAAM,
|
|
1
|
+
{"version":3,"file":"prepareWorkItem.js","sourceRoot":"","sources":["../../src/utils/prepareWorkItem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAwBtD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA6B;IACjE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAEpF,MAAM,IAAI,GAAG,mBAAmB,UAAU,CAAC,aAAa,EAAE,6BAA6B,UAAU,yBAAyB,CAAC;IAC3H,MAAM,OAAO,GAA2B,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;IAC1F,IAAI,aAAa;QAAE,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAErC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAiC;QACpE,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,IAAI;QACT,IAAI;QACJ,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;QACvC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;QACjC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;KACxC,CAAC;AACJ,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,UAAsB,EACtB,UAAkB;IAElB,oBAAoB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CACnC,2EAA2E,UAAU,WAAW,CACjG,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,cAAc,UAAU,qDAAqD,CAAC,CAAC;IACjG,CAAC;IACD,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe;QACrC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,IAAI,EAAE;KACxD,CAAC;AACJ,CAAC"}
|
|
@@ -13,6 +13,24 @@ export type DeployStageResult = {
|
|
|
13
13
|
message: string;
|
|
14
14
|
promotedWorkitemIds: string[];
|
|
15
15
|
};
|
|
16
|
+
/** Maps a comma-separated list of work item names to the components they share. */
|
|
17
|
+
export type SharedComponentsList = Record<string, string[]>;
|
|
18
|
+
export type CombineDetails = {
|
|
19
|
+
childWorkitemsId?: string[];
|
|
20
|
+
parentWorkitemId?: string;
|
|
21
|
+
sharedComponentsList?: SharedComponentsList;
|
|
22
|
+
} & Record<string, unknown>;
|
|
23
|
+
/**
|
|
24
|
+
* Returns true when the combine details describe work items that share one or more components.
|
|
25
|
+
* Shared components mean the work items can optionally be combined before promotion.
|
|
26
|
+
*/
|
|
27
|
+
export declare function hasSharedComponents(combineDetails: CombineDetails | null): boolean;
|
|
28
|
+
export type ValidatePromotionResult = {
|
|
29
|
+
success: boolean;
|
|
30
|
+
errorType: string | null;
|
|
31
|
+
errorDetails: string | null;
|
|
32
|
+
combineDetails: CombineDetails | null;
|
|
33
|
+
};
|
|
16
34
|
/**
|
|
17
35
|
* GET /services/data/vXX.X/connect/devops/pipelines/{pipelineId}/stages/{stageId}/undeployedWorkitems
|
|
18
36
|
*/
|
|
@@ -21,6 +39,12 @@ export declare function getUndeployedWorkItems(connection: Connection, pipelineI
|
|
|
21
39
|
* POST /services/data/vXX.X/connect/devops/pipelines/{pipelineId}/validatePromote
|
|
22
40
|
*/
|
|
23
41
|
export declare function validateDeploy(connection: Connection, pipelineId: string, workItemIds: string[], targetStageId: string): Promise<ValidateDeployResult>;
|
|
42
|
+
export declare function formatValidationDetails(raw: string | null): string;
|
|
43
|
+
/**
|
|
44
|
+
* POST /services/data/vXX.X/connect/devops/pipelines/{pipelineId}/validatePromote
|
|
45
|
+
* Full variant that accepts checkCombineDetails and returns combineDetails.
|
|
46
|
+
*/
|
|
47
|
+
export declare function validatePromotion(connection: Connection, pipelineId: string, workItemIds: string[], targetStageId: string, checkCombineDetails?: boolean, allWorkItemsInStage?: boolean): Promise<ValidatePromotionResult>;
|
|
24
48
|
/**
|
|
25
49
|
* POST /services/data/vXX.X/connect/devops/pipelines/{pipelineId}/promote
|
|
26
50
|
* When workItemIds are provided, targets those specific items (allWorkItemsInStage: false).
|
|
@@ -13,6 +13,15 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import { normalizeSalesforceId } from './soqlUtils.js';
|
|
17
|
+
/**
|
|
18
|
+
* Returns true when the combine details describe work items that share one or more components.
|
|
19
|
+
* Shared components mean the work items can optionally be combined before promotion.
|
|
20
|
+
*/
|
|
21
|
+
export function hasSharedComponents(combineDetails) {
|
|
22
|
+
const shared = combineDetails?.sharedComponentsList;
|
|
23
|
+
return Boolean(shared && Object.keys(shared).length > 0);
|
|
24
|
+
}
|
|
16
25
|
/**
|
|
17
26
|
* GET /services/data/vXX.X/connect/devops/pipelines/{pipelineId}/stages/{stageId}/undeployedWorkitems
|
|
18
27
|
*/
|
|
@@ -38,6 +47,61 @@ export async function validateDeploy(connection, pipelineId, workItemIds, target
|
|
|
38
47
|
errorDetails: response.errorDetails ?? null,
|
|
39
48
|
};
|
|
40
49
|
}
|
|
50
|
+
const VALIDATION_REASON_LABELS = {
|
|
51
|
+
PR_DOES_NOT_EXIST: 'no pull request exists',
|
|
52
|
+
PR_NOT_MERGED: 'pull request has not been merged',
|
|
53
|
+
BRANCH_NOT_FOUND: 'source branch not found',
|
|
54
|
+
};
|
|
55
|
+
export function formatValidationDetails(raw) {
|
|
56
|
+
if (!raw)
|
|
57
|
+
return '';
|
|
58
|
+
const decoded = raw
|
|
59
|
+
.replace(/"/g, '"')
|
|
60
|
+
.replace(/&/g, '&')
|
|
61
|
+
.replace(/</g, '<')
|
|
62
|
+
.replace(/>/g, '>');
|
|
63
|
+
try {
|
|
64
|
+
const parsed = JSON.parse(decoded);
|
|
65
|
+
if (Array.isArray(parsed) && parsed.length > 0) {
|
|
66
|
+
return parsed
|
|
67
|
+
.map((entry) => {
|
|
68
|
+
const label = entry.reason ? VALIDATION_REASON_LABELS[entry.reason] ?? entry.reason : '';
|
|
69
|
+
return entry.workItem ? `${entry.workItem}: ${label}` : label;
|
|
70
|
+
})
|
|
71
|
+
.join(', ');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// not JSON — fall through
|
|
76
|
+
}
|
|
77
|
+
return decoded;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* POST /services/data/vXX.X/connect/devops/pipelines/{pipelineId}/validatePromote
|
|
81
|
+
* Full variant that accepts checkCombineDetails and returns combineDetails.
|
|
82
|
+
*/
|
|
83
|
+
export async function validatePromotion(connection, pipelineId, workItemIds, targetStageId, checkCombineDetails = false, allWorkItemsInStage = false) {
|
|
84
|
+
const path = `/services/data/v${connection.getApiVersion()}/connect/devops/pipelines/${pipelineId}/validatePromote`;
|
|
85
|
+
const payload = {
|
|
86
|
+
selectedWorkItemIds: workItemIds.map(normalizeSalesforceId),
|
|
87
|
+
targetStageId: normalizeSalesforceId(targetStageId),
|
|
88
|
+
allWorkItemsInStage,
|
|
89
|
+
};
|
|
90
|
+
if (checkCombineDetails)
|
|
91
|
+
payload.checkCombineDetails = true;
|
|
92
|
+
const response = await connection.request({
|
|
93
|
+
method: 'POST',
|
|
94
|
+
url: path,
|
|
95
|
+
body: JSON.stringify(payload),
|
|
96
|
+
headers: { 'Content-Type': 'application/json' },
|
|
97
|
+
});
|
|
98
|
+
return {
|
|
99
|
+
success: response.success ?? true,
|
|
100
|
+
errorType: response.errorType ?? null,
|
|
101
|
+
errorDetails: response.errorDetails ?? null,
|
|
102
|
+
combineDetails: response.combineDetails ?? null,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
41
105
|
/**
|
|
42
106
|
* POST /services/data/vXX.X/connect/devops/pipelines/{pipelineId}/promote
|
|
43
107
|
* When workItemIds are provided, targets those specific items (allWorkItemsInStage: false).
|
|
@@ -65,4 +129,4 @@ export async function executeDeploy(connection, pipelineId, targetStageId, fullD
|
|
|
65
129
|
promotedWorkitemIds: response.promotedWorkitemIds ?? [],
|
|
66
130
|
};
|
|
67
131
|
}
|
|
68
|
-
//# sourceMappingURL=
|
|
132
|
+
//# sourceMappingURL=promotionUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promotionUtils.js","sourceRoot":"","sources":["../../src/utils/promotionUtils.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/soqlUtils.d.ts
CHANGED
|
@@ -11,6 +11,11 @@ export declare function escapeSOQL(value: string): string;
|
|
|
11
11
|
* Use this before interpolating IDs into SOQL queries.
|
|
12
12
|
*/
|
|
13
13
|
export declare function validateSalesforceId(id: string, context?: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Trims an 18-character Salesforce ID to its 15-character form.
|
|
16
|
+
* 15-char IDs are returned unchanged. Accepts IDs that have already passed validateSalesforceId.
|
|
17
|
+
*/
|
|
18
|
+
export declare function normalizeSalesforceId(id: string): string;
|
|
14
19
|
/**
|
|
15
20
|
* Validates that a string starts with the expected Salesforce object prefix.
|
|
16
21
|
* Throws an error if validation fails.
|
package/lib/utils/soqlUtils.js
CHANGED
|
@@ -39,6 +39,13 @@ export function validateSalesforceId(id, context) {
|
|
|
39
39
|
}
|
|
40
40
|
return id;
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Trims an 18-character Salesforce ID to its 15-character form.
|
|
44
|
+
* 15-char IDs are returned unchanged. Accepts IDs that have already passed validateSalesforceId.
|
|
45
|
+
*/
|
|
46
|
+
export function normalizeSalesforceId(id) {
|
|
47
|
+
return id.length === 18 ? id.slice(0, 15) : id;
|
|
48
|
+
}
|
|
42
49
|
/**
|
|
43
50
|
* Validates that a string starts with the expected Salesforce object prefix.
|
|
44
51
|
* Throws an error if validation fails.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"soqlUtils.js","sourceRoot":"","sources":["../../src/utils/soqlUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAU,EAAE,OAAgB;IAC/D,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC;IAC9G,CAAC;IAED,2FAA2F;IAC3F,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAQ,MAAkC,CAAC,QAAQ,KAAK,UAAU,CAAC;IACxG,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAEvE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,+BAA+B,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eACrE,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,+BAC1C,GAAG,CACJ,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,EAAU,EAAE,cAAsB,EAAE,UAAkB;IAC/F,oBAAoB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,SAAS,EAAE,iCAAiC,cAAc,IAAI,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAa,EAAE,OAAgB;IACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,EAAE,GAAG,OAAO,IAAI,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AAC7F,CAAC"}
|
|
1
|
+
{"version":3,"file":"soqlUtils.js","sourceRoot":"","sources":["../../src/utils/soqlUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAU,EAAE,OAAgB;IAC/D,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC;IAC9G,CAAC;IAED,2FAA2F;IAC3F,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAQ,MAAkC,CAAC,QAAQ,KAAK,UAAU,CAAC;IACxG,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAEvE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,+BAA+B,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eACrE,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,+BAC1C,GAAG,CACJ,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAU;IAC9C,OAAO,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,EAAU,EAAE,cAAsB,EAAE,UAAkB;IAC/F,oBAAoB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,SAAS,EAAE,iCAAiC,cAAc,IAAI,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAa,EAAE,OAAgB;IACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,EAAE,GAAG,OAAO,IAAI,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AAC7F,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Update a DevOps Center pipeline stage.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Updates the name of a pipeline stage.
|
|
8
|
+
|
|
9
|
+
# flags.stage-id.summary
|
|
10
|
+
|
|
11
|
+
ID of the pipeline stage to update.
|
|
12
|
+
|
|
13
|
+
# flags.name.summary
|
|
14
|
+
|
|
15
|
+
New name for the pipeline stage.
|
|
16
|
+
|
|
17
|
+
# examples
|
|
18
|
+
|
|
19
|
+
- Rename a pipeline stage.
|
|
20
|
+
|
|
21
|
+
<%= config.bin %> <%= command.id %> --target-org my-devops-org --stage-id 1QV000000000001 --name "Integration"
|
|
22
|
+
|
|
23
|
+
# error.StageNotFound
|
|
24
|
+
|
|
25
|
+
Stage "%s" not found. Check the stage ID and try again.
|
|
@@ -48,6 +48,10 @@ ID of the source pipeline stage whose approved work items will be promoted. Mutu
|
|
|
48
48
|
|
|
49
49
|
<%= config.bin %> <%= command.id %> --target-org my-devops-org --stage-id 1QVxx0000000001 --target-stage-id 1QVxx0000000002 --deploy-all
|
|
50
50
|
|
|
51
|
+
# flags.skip-validation.summary
|
|
52
|
+
|
|
53
|
+
Skip pre-promote validation. By default, promotion is validated before proceeding to prevent promoting work items without an associated PR. Use this flag to bypass validation.
|
|
54
|
+
|
|
51
55
|
# error.NoModeFlag
|
|
52
56
|
|
|
53
57
|
Provide either --work-item-id to promote specific work items or --stage-id to promote all approved work items from a stage.
|
|
@@ -56,6 +60,18 @@ Provide either --work-item-id to promote specific work items or --stage-id to pr
|
|
|
56
60
|
|
|
57
61
|
No work items found to promote from the source stage. Make sure there are approved work items before promoting.
|
|
58
62
|
|
|
63
|
+
# error.ValidationRequestFailed
|
|
64
|
+
|
|
65
|
+
Failed to run pre-promote validation: %s
|
|
66
|
+
|
|
67
|
+
# error.ValidationFailedCombineRequired
|
|
68
|
+
|
|
69
|
+
Promotion blocked: work items must be combined before promoting. Run the combine command with the following details:
|
|
70
|
+
|
|
71
|
+
# error.ValidationFailed
|
|
72
|
+
|
|
73
|
+
Pre-promote validation failed (%s): %s
|
|
74
|
+
|
|
59
75
|
# error.PromoteFailed
|
|
60
76
|
|
|
61
77
|
Failed to promote: %s
|
|
@@ -18,15 +18,15 @@ ID of a specific work item to deploy. Omit to deploy all undeployed work items f
|
|
|
18
18
|
|
|
19
19
|
# examples
|
|
20
20
|
|
|
21
|
-
- Complete a promotion for an out-of-sync pipeline stage
|
|
21
|
+
- Complete a promotion for an out-of-sync pipeline stage:
|
|
22
22
|
|
|
23
23
|
<%= config.bin %> <%= command.id %> --target-org my-devops-org --target-stage-id 1QV000000000001
|
|
24
24
|
|
|
25
|
-
- Complete a promotion for a specific work item (e.g. first stage of a pipeline)
|
|
25
|
+
- Complete a promotion for a specific work item (e.g. first stage of a pipeline):
|
|
26
26
|
|
|
27
27
|
<%= config.bin %> <%= command.id %> --target-org my-devops-org --target-stage-id 1QV000000000001 --work-item-id 1fk000000000001
|
|
28
28
|
|
|
29
|
-
- Complete a promotion with full deploy and a specific test level
|
|
29
|
+
- Complete a promotion with full deploy and a specific test level:
|
|
30
30
|
|
|
31
31
|
<%= config.bin %> <%= command.id %> --target-org my-devops-org --target-stage-id 1QV000000000001 --deploy-all --test-level RunLocalTests
|
|
32
32
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Validate work item promotion for a pipeline stage.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Validates whether the specified work items can be promoted to the target pipeline stage. Checks for VCS and object permission errors before a promotion is attempted.
|
|
8
|
+
|
|
9
|
+
# flags.target-stage-id.summary
|
|
10
|
+
|
|
11
|
+
ID of the target pipeline stage to validate promotion to.
|
|
12
|
+
|
|
13
|
+
# flags.work-item-id.summary
|
|
14
|
+
|
|
15
|
+
ID of a work item to validate for promotion. Specify multiple times for multiple work items.
|
|
16
|
+
|
|
17
|
+
# examples
|
|
18
|
+
|
|
19
|
+
- Validate promotion of a work item to a target stage:
|
|
20
|
+
|
|
21
|
+
<%= config.bin %> <%= command.id %> --target-org my-devops-org --target-stage-id 1QV000000000001 --work-item-id 1fk000000000001
|
|
22
|
+
|
|
23
|
+
- Validate promotion of multiple work items:
|
|
24
|
+
|
|
25
|
+
<%= config.bin %> <%= command.id %> --target-org my-devops-org --target-stage-id 1QV000000000001 --work-item-id 1fk000000000001 --work-item-id 1fk000000000002
|
|
26
|
+
|
|
27
|
+
# error.NoPipeline
|
|
28
|
+
|
|
29
|
+
No pipeline found for work item "%s". Ensure the project has an associated pipeline.
|
|
30
|
+
|
|
31
|
+
# error.ValidationFailed
|
|
32
|
+
|
|
33
|
+
Validation failed (%s): %s
|
|
34
|
+
|
|
35
|
+
# error.ValidationRequestFailed
|
|
36
|
+
|
|
37
|
+
Validation request failed: %s
|
|
38
|
+
|
|
39
|
+
# suggestion.SharedComponents
|
|
40
|
+
|
|
41
|
+
The selected work items share one or more components. Choose one of these approaches:
|
|
42
|
+
|
|
43
|
+
# suggestion.CombineOption
|
|
44
|
+
|
|
45
|
+
Option 1 - Combine the work items and promote them as a single unit:
|
|
46
|
+
|
|
47
|
+
# suggestion.PromoteOption
|
|
48
|
+
|
|
49
|
+
Option 2 - Promote the work items as they are, without combining:
|
|
50
|
+
|
|
51
|
+
# suggestion.CombineStepPrepare
|
|
52
|
+
|
|
53
|
+
1. Combine the work items:
|
|
54
|
+
%s
|
|
55
|
+
|
|
56
|
+
# suggestion.CombineStepPromote
|
|
57
|
+
|
|
58
|
+
2. Promote the combined work item:
|
|
59
|
+
%s
|
|
60
|
+
|
|
61
|
+
# suggestion.PromoteStep
|
|
62
|
+
|
|
63
|
+
Run:
|
|
64
|
+
%s
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Delete the source code repository branch associated with a pipeline stage.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Removes the branch linked to the specified pipeline stage. Because branches are configured from right to left (a stage can have a branch only after the stage to its right does), removing a branch also removes the branches from all upstream stages (to the left) in the pipeline, keeping it in a valid state. The branch records in the repository are not deleted; only their association with the stages is removed. The stage must belong to an inactive pipeline.
|
|
8
|
+
|
|
9
|
+
# flags.pipeline-id.summary
|
|
10
|
+
|
|
11
|
+
ID of the pipeline that contains the stage. Used to verify the pipeline is inactive before deleting.
|
|
12
|
+
|
|
13
|
+
# flags.stage-id.summary
|
|
14
|
+
|
|
15
|
+
ID of the pipeline stage whose branch you want to delete.
|
|
16
|
+
|
|
17
|
+
# examples
|
|
18
|
+
|
|
19
|
+
- Delete the branch associated with a pipeline stage:
|
|
20
|
+
|
|
21
|
+
<%= config.bin %> <%= command.id %> --target-org my-devops-org --pipeline-id 0Xo000000000001 --stage-id 0Xp000000000001
|
|
22
|
+
|
|
23
|
+
# error.PipelineAlreadyActive
|
|
24
|
+
|
|
25
|
+
Pipeline %s is already active. A branch can only be removed from a stage in an inactive pipeline.
|
|
26
|
+
|
|
27
|
+
# error.StageNotFound
|
|
28
|
+
|
|
29
|
+
Pipeline stage "%s" doesn't exist in pipeline "%s". Check the stage ID and try again.
|
|
30
|
+
|
|
31
|
+
# error.NoBranch
|
|
32
|
+
|
|
33
|
+
Pipeline stage "%s" doesn't have a branch associated with it. There's nothing to delete.
|
|
34
|
+
|
|
35
|
+
# error.BranchDeleteFailed
|
|
36
|
+
|
|
37
|
+
Failed to delete branch from stage: %s
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/plugin-devops-center",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@salesforce/plugin-devops-center",
|
|
9
|
-
"version": "2.0.
|
|
9
|
+
"version": "2.0.1",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@jsforce/jsforce-node": "^3",
|