@salesforce/plugin-devops-center 2.1.1 → 2.3.0
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 +53 -37
- package/lib/commands/devops/pipeline/create.d.ts +1 -0
- package/lib/commands/devops/pipeline/create.js +20 -3
- package/lib/commands/devops/pipeline/create.js.map +1 -1
- package/lib/commands/devops/promote.d.ts +8 -0
- package/lib/commands/devops/promote.js +31 -1
- package/lib/commands/devops/promote.js.map +1 -1
- package/lib/commands/devops/promotion/validate.js +16 -3
- package/lib/commands/devops/promotion/validate.js.map +1 -1
- package/lib/commands/devops/stage/branch/add.d.ts +15 -0
- package/lib/commands/devops/stage/branch/add.js +48 -1
- package/lib/commands/devops/stage/branch/add.js.map +1 -1
- package/lib/commands/devops/stage/environment/add.d.ts +15 -0
- package/lib/commands/devops/stage/environment/add.js +51 -1
- package/lib/commands/devops/stage/environment/add.js.map +1 -1
- package/lib/commands/devops/work-item/create.js +1 -0
- package/lib/commands/devops/work-item/create.js.map +1 -1
- package/lib/commands/devops/work-item/list.js +2 -1
- package/lib/commands/devops/work-item/list.js.map +1 -1
- package/lib/utils/addStageBranch.d.ts +20 -0
- package/lib/utils/addStageBranch.js +33 -0
- package/lib/utils/addStageBranch.js.map +1 -1
- package/lib/utils/addStageEnvironment.d.ts +21 -0
- package/lib/utils/addStageEnvironment.js +34 -0
- package/lib/utils/addStageEnvironment.js.map +1 -1
- package/lib/utils/createPipeline.d.ts +6 -0
- package/lib/utils/createPipeline.js +41 -1
- package/lib/utils/createPipeline.js.map +1 -1
- package/lib/utils/createWorkItem.js +22 -18
- package/lib/utils/createWorkItem.js.map +1 -1
- package/lib/utils/promoteStage.d.ts +20 -0
- package/lib/utils/promoteStage.js +25 -0
- package/lib/utils/promoteStage.js.map +1 -1
- package/lib/utils/updateWorkItem.d.ts +22 -2
- package/lib/utils/updateWorkItem.js +98 -20
- package/lib/utils/updateWorkItem.js.map +1 -1
- package/lib/utils/workItems.js +7 -4
- package/lib/utils/workItems.js.map +1 -1
- package/messages/devops.pipeline.create.md +8 -0
- package/messages/devops.promote.md +12 -0
- package/messages/devops.stage.branch.add.md +17 -1
- package/messages/devops.stage.environment.add.md +16 -0
- package/npm-shrinkwrap.json +2 -2
- package/oclif.manifest.json +29 -3
- package/package.json +3 -3
- package/schemas/devops-pipeline-create.json +19 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/commands/devops/promotion/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/commands/devops/promotion/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,21 @@ export default class DevopsStageBranchAdd extends SfCommand<AddStageBranchResult
|
|
|
12
12
|
'stage-id': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
13
|
'branch-name': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
14
|
'create-vcs-branch': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
16
|
};
|
|
16
17
|
run(): Promise<AddStageBranchResult>;
|
|
18
|
+
/**
|
|
19
|
+
* A stage holds only one branch (DevopsPipelineStage.SourceCodeRepositoryBranchId). Adding a new
|
|
20
|
+
* one re-points the lookup and orphans the old SourceCodeRepositoryBranch record, so block by
|
|
21
|
+
* default and require --force to replace it. Returns the existing branch (when present) so the
|
|
22
|
+
* caller can remove the orphaned record after the new branch is associated.
|
|
23
|
+
*/
|
|
24
|
+
private guardExistingBranch;
|
|
25
|
+
/**
|
|
26
|
+
* Removes the branch record the stage was re-pointed away from, unless another stage still
|
|
27
|
+
* references it. Best-effort: a cleanup failure is surfaced as a warning and does not fail the
|
|
28
|
+
* command, since the new branch has already been associated successfully.
|
|
29
|
+
*/
|
|
30
|
+
private cleanupReplacedBranch;
|
|
31
|
+
private logResult;
|
|
17
32
|
}
|
|
@@ -15,11 +15,15 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { Messages } from '@salesforce/core';
|
|
17
17
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
18
|
-
import { addStageBranch } from '../../../../utils/addStageBranch.js';
|
|
18
|
+
import { addStageBranch, getStageBranch, deleteOrphanedBranch, } from '../../../../utils/addStageBranch.js';
|
|
19
19
|
import { fetchPipelineStages } from '../../../../utils/pipelineUtils.js';
|
|
20
20
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
21
21
|
const messages = Messages.loadMessages('@salesforce/plugin-devops-center', 'devops.stage.branch.add');
|
|
22
22
|
const commonErrorMessages = Messages.loadMessages('@salesforce/plugin-devops-center', 'commonErrors');
|
|
23
|
+
// The platform stores created branch names with a "$$" marker prefix; strip it for display.
|
|
24
|
+
function displayBranchName(existingBranch) {
|
|
25
|
+
return (existingBranch.branchName ?? existingBranch.branchId).replace(/^\$\$/, '');
|
|
26
|
+
}
|
|
23
27
|
export default class DevopsStageBranchAdd extends SfCommand {
|
|
24
28
|
static summary = messages.getMessage('summary');
|
|
25
29
|
static description = messages.getMessage('description');
|
|
@@ -46,6 +50,10 @@ export default class DevopsStageBranchAdd extends SfCommand {
|
|
|
46
50
|
summary: messages.getMessage('flags.create-vcs-branch.summary'),
|
|
47
51
|
default: false,
|
|
48
52
|
}),
|
|
53
|
+
force: Flags.boolean({
|
|
54
|
+
summary: messages.getMessage('flags.force.summary'),
|
|
55
|
+
default: false,
|
|
56
|
+
}),
|
|
49
57
|
};
|
|
50
58
|
async run() {
|
|
51
59
|
const { flags } = await this.parse(DevopsStageBranchAdd);
|
|
@@ -76,6 +84,7 @@ export default class DevopsStageBranchAdd extends SfCommand {
|
|
|
76
84
|
this.error(messages.getMessage('error.NextStageNoBranch', [nextStage.Name ?? nextStage.Id, stageId]));
|
|
77
85
|
}
|
|
78
86
|
}
|
|
87
|
+
const existingBranch = await this.guardExistingBranch(connection, stageId, flags.force);
|
|
79
88
|
let result;
|
|
80
89
|
try {
|
|
81
90
|
result = await addStageBranch({
|
|
@@ -93,6 +102,44 @@ export default class DevopsStageBranchAdd extends SfCommand {
|
|
|
93
102
|
}
|
|
94
103
|
throw error;
|
|
95
104
|
}
|
|
105
|
+
if (existingBranch && result.success) {
|
|
106
|
+
await this.cleanupReplacedBranch(connection, existingBranch);
|
|
107
|
+
}
|
|
108
|
+
return this.logResult(result, stageId, pipelineId);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* A stage holds only one branch (DevopsPipelineStage.SourceCodeRepositoryBranchId). Adding a new
|
|
112
|
+
* one re-points the lookup and orphans the old SourceCodeRepositoryBranch record, so block by
|
|
113
|
+
* default and require --force to replace it. Returns the existing branch (when present) so the
|
|
114
|
+
* caller can remove the orphaned record after the new branch is associated.
|
|
115
|
+
*/
|
|
116
|
+
async guardExistingBranch(connection, stageId, force) {
|
|
117
|
+
const existingBranch = await getStageBranch(connection, stageId);
|
|
118
|
+
if (!existingBranch) {
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
if (!force) {
|
|
122
|
+
this.error(messages.getMessage('error.BranchAlreadyExists', [stageId, displayBranchName(existingBranch), this.config.bin]));
|
|
123
|
+
}
|
|
124
|
+
return existingBranch;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Removes the branch record the stage was re-pointed away from, unless another stage still
|
|
128
|
+
* references it. Best-effort: a cleanup failure is surfaced as a warning and does not fail the
|
|
129
|
+
* command, since the new branch has already been associated successfully.
|
|
130
|
+
*/
|
|
131
|
+
async cleanupReplacedBranch(connection, existingBranch) {
|
|
132
|
+
try {
|
|
133
|
+
const deleted = await deleteOrphanedBranch(connection, existingBranch.branchId);
|
|
134
|
+
if (deleted) {
|
|
135
|
+
this.log(messages.getMessage('info.ReplacedBranchRemoved', [displayBranchName(existingBranch)]));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
this.warn(messages.getMessage('warn.ReplacedBranchCleanupFailed', [existingBranch.branchId]));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
logResult(result, stageId, pipelineId) {
|
|
96
143
|
if (result.success) {
|
|
97
144
|
const action = result.branchCreated ? 'Created branch and associated it' : 'Successfully associated branch';
|
|
98
145
|
this.log(`${action} with the stage.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/devops/stage/branch/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/devops/stage/branch/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,21 @@ export default class DevopsStageEnvironmentAdd extends SfCommand<AddStageEnviron
|
|
|
13
13
|
'environment-name': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
14
|
'org-type': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
15
|
'no-browser': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
17
|
};
|
|
17
18
|
run(): Promise<AddStageEnvironmentResult>;
|
|
19
|
+
/**
|
|
20
|
+
* A stage holds only one environment (DevopsPipelineStage.DevOpsEnvironmentId). Adding a new one
|
|
21
|
+
* re-points the lookup and orphans the old DevopsEnvironment record, so block by default and
|
|
22
|
+
* require --force to replace it. Returns the existing environment (when present) so the caller can
|
|
23
|
+
* remove the orphaned record after the new environment is associated.
|
|
24
|
+
*/
|
|
25
|
+
private guardExistingEnvironment;
|
|
26
|
+
/**
|
|
27
|
+
* Removes the environment record the stage was re-pointed away from, unless another stage still
|
|
28
|
+
* references it. Best-effort: a cleanup failure is surfaced as a warning and does not fail the
|
|
29
|
+
* command, since the new environment has already been associated successfully.
|
|
30
|
+
*/
|
|
31
|
+
private cleanupReplacedEnvironment;
|
|
32
|
+
private logResult;
|
|
18
33
|
}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import { execFile } from 'node:child_process';
|
|
17
17
|
import { Messages } from '@salesforce/core';
|
|
18
18
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
19
|
-
import { addStageEnvironment } from '../../../../utils/addStageEnvironment.js';
|
|
19
|
+
import { addStageEnvironment, getStageEnvironment, deleteOrphanedEnvironment, } from '../../../../utils/addStageEnvironment.js';
|
|
20
20
|
import { fetchPipelineStages } from '../../../../utils/pipelineUtils.js';
|
|
21
21
|
import { validateSalesforceId } from '../../../../utils/soqlUtils.js';
|
|
22
22
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
@@ -93,6 +93,10 @@ export default class DevopsStageEnvironmentAdd extends SfCommand {
|
|
|
93
93
|
summary: messages.getMessage('flags.no-browser.summary'),
|
|
94
94
|
default: false,
|
|
95
95
|
}),
|
|
96
|
+
force: Flags.boolean({
|
|
97
|
+
summary: messages.getMessage('flags.force.summary'),
|
|
98
|
+
default: false,
|
|
99
|
+
}),
|
|
96
100
|
};
|
|
97
101
|
async run() {
|
|
98
102
|
const { flags } = await this.parse(DevopsStageEnvironmentAdd);
|
|
@@ -123,6 +127,7 @@ export default class DevopsStageEnvironmentAdd extends SfCommand {
|
|
|
123
127
|
if (pipelineRecord?.IsActive) {
|
|
124
128
|
this.error(messages.getMessage('error.PipelineAlreadyActive', [pipelineId]));
|
|
125
129
|
}
|
|
130
|
+
const existingEnvironment = await this.guardExistingEnvironment(connection, stageId, flags.force);
|
|
126
131
|
let result;
|
|
127
132
|
try {
|
|
128
133
|
result = await addStageEnvironment({
|
|
@@ -157,6 +162,51 @@ export default class DevopsStageEnvironmentAdd extends SfCommand {
|
|
|
157
162
|
finally {
|
|
158
163
|
this.spinner.stop();
|
|
159
164
|
}
|
|
165
|
+
if (existingEnvironment && result.success) {
|
|
166
|
+
await this.cleanupReplacedEnvironment(connection, existingEnvironment);
|
|
167
|
+
}
|
|
168
|
+
return this.logResult(result, stageId, orgType, pipelineId);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* A stage holds only one environment (DevopsPipelineStage.DevOpsEnvironmentId). Adding a new one
|
|
172
|
+
* re-points the lookup and orphans the old DevopsEnvironment record, so block by default and
|
|
173
|
+
* require --force to replace it. Returns the existing environment (when present) so the caller can
|
|
174
|
+
* remove the orphaned record after the new environment is associated.
|
|
175
|
+
*/
|
|
176
|
+
async guardExistingEnvironment(connection, stageId, force) {
|
|
177
|
+
const existingEnvironment = await getStageEnvironment(connection, stageId);
|
|
178
|
+
if (!existingEnvironment) {
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
if (!force) {
|
|
182
|
+
this.error(messages.getMessage('error.EnvironmentAlreadyExists', [
|
|
183
|
+
stageId,
|
|
184
|
+
existingEnvironment.environmentName ?? existingEnvironment.environmentId,
|
|
185
|
+
existingEnvironment.environmentId,
|
|
186
|
+
this.config.bin,
|
|
187
|
+
]));
|
|
188
|
+
}
|
|
189
|
+
return existingEnvironment;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Removes the environment record the stage was re-pointed away from, unless another stage still
|
|
193
|
+
* references it. Best-effort: a cleanup failure is surfaced as a warning and does not fail the
|
|
194
|
+
* command, since the new environment has already been associated successfully.
|
|
195
|
+
*/
|
|
196
|
+
async cleanupReplacedEnvironment(connection, existingEnvironment) {
|
|
197
|
+
try {
|
|
198
|
+
const deleted = await deleteOrphanedEnvironment(connection, existingEnvironment.environmentId);
|
|
199
|
+
if (deleted) {
|
|
200
|
+
this.log(messages.getMessage('info.ReplacedEnvironmentRemoved', [
|
|
201
|
+
existingEnvironment.environmentName ?? existingEnvironment.environmentId,
|
|
202
|
+
]));
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
this.warn(messages.getMessage('warn.ReplacedEnvironmentCleanupFailed', [existingEnvironment.environmentId]));
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
logResult(result, stageId, orgType, pipelineId) {
|
|
160
210
|
if (result.success) {
|
|
161
211
|
this.log(messages.getMessage('info.Success'));
|
|
162
212
|
this.log(` Stage ID: ${stageId}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/devops/stage/environment/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/devops/stage/environment/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAc,QAAQ,EAAO,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EACL,mBAAmB,EAGnB,mBAAmB,EACnB,yBAAyB,GAE1B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,kCAAkC,EAAE,8BAA8B,CAAC,CAAC;AAC3G,MAAM,mBAAmB,GAAG,QAAQ,CAAC,YAAY,CAAC,kCAAkC,EAAE,cAAc,CAAC,CAAC;AAEtG;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,8EAA8E;IAC9E,uDAAuD;IACvD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,gFAAgF;IAChF,+EAA+E;IAC/E,gFAAgF;IAChF,gDAAgD;IAChD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,SAAoC;IAClF,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAE5D,MAAM,CAAU,KAAK,GAAG;QAC7B,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;QACpC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;YAChC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC;YACzD,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,SAAS;SAChB,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC;YAC7B,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC;YACtD,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,SAAS;SAChB,CAAC;QACF,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC/B,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,gCAAgC,CAAC;YAC9D,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,GAAG;SACV,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC;YACtD,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;SACnC,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1B,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACxD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC;YACnD,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAQ,KAAK,CAAC,YAAY,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;QAClC,MAAM,eAAe,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAY,CAAC;QAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QAEtC,IAAI,MAA6B,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtE,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC3E,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC;QAED,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC7C,MAAM,mBAAmB,GAAG,MAAM,UAAU,CAAC,KAAK,CAChD,mDAAmD,UAAU,WAAW,CACzE,CAAC;QACF,MAAM,cAAc,GAAG,CAAC,mBAAmB,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAuC,CAAC;QACpG,IAAI,cAAc,EAAE,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,6BAA6B,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAElG,IAAI,MAAiC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,mBAAmB,CAAC;gBACjC,UAAU;gBACV,UAAU;gBACV,OAAO;gBACP,eAAe;gBACf,OAAO;gBACP,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;oBAClB,MAAM,GAAG,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;oBACrE,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,OAAO,CAAC,GAAG,CAAC,CAAC;wBACb,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC;oBACtD,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC1D,CAAC;oBACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBACjE,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtE,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC3E,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,mBAAmB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,IAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,wBAAwB,CACpC,UAAsB,EACtB,OAAe,EACf,KAAc;QAEd,MAAM,mBAAmB,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3E,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CACR,QAAQ,CAAC,UAAU,CAAC,gCAAgC,EAAE;gBACpD,OAAO;gBACP,mBAAmB,CAAC,eAAe,IAAI,mBAAmB,CAAC,aAAa;gBACxE,mBAAmB,CAAC,aAAa;gBACjC,IAAI,CAAC,MAAM,CAAC,GAAG;aAChB,CAAC,CACH,CAAC;QACJ,CAAC;QACD,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,0BAA0B,CACtC,UAAsB,EACtB,mBAA6C;QAE7C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAC/F,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,GAAG,CACN,QAAQ,CAAC,UAAU,CAAC,iCAAiC,EAAE;oBACrD,mBAAmB,CAAC,eAAe,IAAI,mBAAmB,CAAC,aAAa;iBACzE,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,uCAAuC,EAAE,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/G,CAAC;IACH,CAAC;IAEO,SAAS,CACf,MAAiC,EACjC,OAAe,EACf,OAAgB,EAChB,UAAkB;QAElB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,GAAG,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,GAAG,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,+BAA+B,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC"}
|
|
@@ -65,6 +65,7 @@ export default class DevopsWorkItemCreate extends SfCommand {
|
|
|
65
65
|
if (result.success) {
|
|
66
66
|
this.log(`Successfully created work item: ${result.workItemName ?? result.workItemId ?? ''}`);
|
|
67
67
|
this.log(` ID: ${result.workItemId ?? ''}`);
|
|
68
|
+
this.log(` Name: ${result.workItemName ?? ''}`);
|
|
68
69
|
this.log(` Subject: ${result.subject ?? ''}`);
|
|
69
70
|
}
|
|
70
71
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/devops/work-item/create.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/devops/work-item/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,7 @@ export default class DevopsWorkItemList extends SfCommand {
|
|
|
54
54
|
}
|
|
55
55
|
else {
|
|
56
56
|
const tableData = workItems.map((wi) => ({
|
|
57
|
+
ID: wi.id,
|
|
57
58
|
Name: wi.name,
|
|
58
59
|
Subject: wi.subject ?? '',
|
|
59
60
|
Status: wi.status,
|
|
@@ -63,7 +64,7 @@ export default class DevopsWorkItemList extends SfCommand {
|
|
|
63
64
|
this.styledHeader('DevOps Center Work Items');
|
|
64
65
|
this.table({
|
|
65
66
|
data: tableData,
|
|
66
|
-
columns: ['Name', 'Subject', 'Status', 'Branch', 'Target Branch'],
|
|
67
|
+
columns: ['ID', 'Name', 'Subject', 'Status', 'Branch', 'Target Branch'],
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
70
|
return { workItems };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/devops/work-item/list.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/devops/work-item/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,26 @@ export type AddStageBranchParams = {
|
|
|
6
6
|
branchName: string;
|
|
7
7
|
createVcsBranch: boolean;
|
|
8
8
|
};
|
|
9
|
+
export type ExistingStageBranch = {
|
|
10
|
+
branchId: string;
|
|
11
|
+
branchName?: string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Returns the branch currently associated with a pipeline stage, if any.
|
|
15
|
+
*
|
|
16
|
+
* A stage references its branch via DevopsPipelineStage.SourceCodeRepositoryBranchId. Adding a new
|
|
17
|
+
* branch re-points that lookup, so callers must check for an existing branch first to avoid
|
|
18
|
+
* orphaning the old SourceCodeRepositoryBranch record.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getStageBranch(connection: Connection, stageId: string): Promise<ExistingStageBranch | undefined>;
|
|
21
|
+
/**
|
|
22
|
+
* Deletes a SourceCodeRepositoryBranch record only when no pipeline stage still references it.
|
|
23
|
+
* Returns true when the record was deleted, false when it is still referenced (left intact).
|
|
24
|
+
*
|
|
25
|
+
* Used to clean up the branch a stage was re-pointed away from during a --force replace, so the old
|
|
26
|
+
* record isn't orphaned in the org. The reference check keeps a branch shared by another stage safe.
|
|
27
|
+
*/
|
|
28
|
+
export declare function deleteOrphanedBranch(connection: Connection, branchId: string): Promise<boolean>;
|
|
9
29
|
export type AddStageBranchResult = {
|
|
10
30
|
success: boolean;
|
|
11
31
|
stageId: string;
|
|
@@ -13,6 +13,39 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import { validateSalesforceId } from './soqlUtils.js';
|
|
17
|
+
/**
|
|
18
|
+
* Returns the branch currently associated with a pipeline stage, if any.
|
|
19
|
+
*
|
|
20
|
+
* A stage references its branch via DevopsPipelineStage.SourceCodeRepositoryBranchId. Adding a new
|
|
21
|
+
* branch re-points that lookup, so callers must check for an existing branch first to avoid
|
|
22
|
+
* orphaning the old SourceCodeRepositoryBranch record.
|
|
23
|
+
*/
|
|
24
|
+
export async function getStageBranch(connection, stageId) {
|
|
25
|
+
validateSalesforceId(stageId, 'stage');
|
|
26
|
+
const result = await connection.query(`SELECT SourceCodeRepositoryBranchId, SourceCodeRepositoryBranch.Name FROM DevopsPipelineStage WHERE Id = '${stageId}' LIMIT 1`);
|
|
27
|
+
const record = (result.records ?? [])[0];
|
|
28
|
+
if (!record?.SourceCodeRepositoryBranchId) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
return { branchId: record.SourceCodeRepositoryBranchId, branchName: record.SourceCodeRepositoryBranch?.Name };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Deletes a SourceCodeRepositoryBranch record only when no pipeline stage still references it.
|
|
35
|
+
* Returns true when the record was deleted, false when it is still referenced (left intact).
|
|
36
|
+
*
|
|
37
|
+
* Used to clean up the branch a stage was re-pointed away from during a --force replace, so the old
|
|
38
|
+
* record isn't orphaned in the org. The reference check keeps a branch shared by another stage safe.
|
|
39
|
+
*/
|
|
40
|
+
export async function deleteOrphanedBranch(connection, branchId) {
|
|
41
|
+
validateSalesforceId(branchId, 'branch');
|
|
42
|
+
const refs = await connection.query(`SELECT Id FROM DevopsPipelineStage WHERE SourceCodeRepositoryBranchId = '${branchId}' LIMIT 1`);
|
|
43
|
+
if ((refs.records ?? []).length > 0) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
await connection.sobject('SourceCodeRepositoryBranch').delete(branchId);
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
16
49
|
/**
|
|
17
50
|
* Associates a branch with a pipeline stage via the Connect API.
|
|
18
51
|
* PATCH /services/data/v{version}/connect/devops/pipelines/{pipelineId}/stages/{stageId}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addStageBranch.js","sourceRoot":"","sources":["../../src/utils/addStageBranch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"addStageBranch.js","sourceRoot":"","sources":["../../src/utils/addStageBranch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAetD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAsB,EACtB,OAAe;IAEf,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAInC,6GAA6G,OAAO,WAAW,CAChI,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,4BAA4B,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,4BAA4B,EAAE,UAAU,EAAE,MAAM,CAAC,0BAA0B,EAAE,IAAI,EAAE,CAAC;AAChH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAsB,EAAE,QAAgB;IACjF,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,CACjC,4EAA4E,QAAQ,WAAW,CAChG,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC;AACd,CAAC;AAmBD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAA4B;IAC/D,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAEhF,MAAM,IAAI,GAAG,mBAAmB,UAAU,CAAC,aAAa,EAAE,6BAA6B,UAAU,WAAW,OAAO,EAAE,CAAC;IAEtH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAA6B;QAChE,MAAM,EAAE,OAAO;QACf,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,SAAS,EAAE,UAAU;YACrB,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC;SACzC,CAAC;QACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,OAAO,IAAI,uCAAuC;SAC/D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO;QACP,UAAU;QACV,aAAa,EAAE,eAAe;QAC9B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,UAAU;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
import { Connection } from '@salesforce/core';
|
|
2
2
|
export type OrgType = 'Production' | 'Sandbox';
|
|
3
|
+
export type ExistingStageEnvironment = {
|
|
4
|
+
environmentId: string;
|
|
5
|
+
environmentName?: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Returns the environment currently associated with a pipeline stage, if any.
|
|
9
|
+
*
|
|
10
|
+
* A stage references its environment via DevopsPipelineStage.DevOpsEnvironmentId. Adding a new
|
|
11
|
+
* environment re-points that lookup, so callers must check for an existing environment first to
|
|
12
|
+
* avoid orphaning the old DevopsEnvironment record.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getStageEnvironment(connection: Connection, stageId: string): Promise<ExistingStageEnvironment | undefined>;
|
|
15
|
+
/**
|
|
16
|
+
* Deletes a DevopsEnvironment record only when no pipeline stage still references it.
|
|
17
|
+
* Returns true when the record was deleted, false when it is still referenced (left intact).
|
|
18
|
+
*
|
|
19
|
+
* Used to clean up the environment a stage was re-pointed away from during a --force replace, so the
|
|
20
|
+
* old record isn't orphaned in the org. The reference check keeps an environment shared by another
|
|
21
|
+
* stage safe.
|
|
22
|
+
*/
|
|
23
|
+
export declare function deleteOrphanedEnvironment(connection: Connection, environmentId: string): Promise<boolean>;
|
|
3
24
|
export declare const POLL_INTERVAL_MS = 3000;
|
|
4
25
|
export declare const POLL_TIMEOUT_MS: number;
|
|
5
26
|
export type AddStageEnvironmentParams = {
|
|
@@ -13,6 +13,40 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import { validateSalesforceId } from './soqlUtils.js';
|
|
17
|
+
/**
|
|
18
|
+
* Returns the environment currently associated with a pipeline stage, if any.
|
|
19
|
+
*
|
|
20
|
+
* A stage references its environment via DevopsPipelineStage.DevOpsEnvironmentId. Adding a new
|
|
21
|
+
* environment re-points that lookup, so callers must check for an existing environment first to
|
|
22
|
+
* avoid orphaning the old DevopsEnvironment record.
|
|
23
|
+
*/
|
|
24
|
+
export async function getStageEnvironment(connection, stageId) {
|
|
25
|
+
validateSalesforceId(stageId, 'stage');
|
|
26
|
+
const result = await connection.query(`SELECT DevOpsEnvironmentId, DevOpsEnvironment.Name FROM DevopsPipelineStage WHERE Id = '${stageId}' LIMIT 1`);
|
|
27
|
+
const record = (result.records ?? [])[0];
|
|
28
|
+
if (!record?.DevOpsEnvironmentId) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
return { environmentId: record.DevOpsEnvironmentId, environmentName: record.DevOpsEnvironment?.Name };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Deletes a DevopsEnvironment record only when no pipeline stage still references it.
|
|
35
|
+
* Returns true when the record was deleted, false when it is still referenced (left intact).
|
|
36
|
+
*
|
|
37
|
+
* Used to clean up the environment a stage was re-pointed away from during a --force replace, so the
|
|
38
|
+
* old record isn't orphaned in the org. The reference check keeps an environment shared by another
|
|
39
|
+
* stage safe.
|
|
40
|
+
*/
|
|
41
|
+
export async function deleteOrphanedEnvironment(connection, environmentId) {
|
|
42
|
+
validateSalesforceId(environmentId, 'environment');
|
|
43
|
+
const refs = await connection.query(`SELECT Id FROM DevopsPipelineStage WHERE DevOpsEnvironmentId = '${environmentId}' LIMIT 1`);
|
|
44
|
+
if ((refs.records ?? []).length > 0) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
await connection.sobject('DevopsEnvironment').delete(environmentId);
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
16
50
|
const ORG_TYPE_API_MAP = {
|
|
17
51
|
Production: 'PRODUCTION',
|
|
18
52
|
Sandbox: 'SANDBOX',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addStageEnvironment.js","sourceRoot":"","sources":["../../src/utils/addStageEnvironment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"addStageEnvironment.js","sourceRoot":"","sources":["../../src/utils/addStageEnvironment.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,10 @@ export type RepoInfo = {
|
|
|
4
4
|
repoType: string;
|
|
5
5
|
created: boolean;
|
|
6
6
|
};
|
|
7
|
+
export type PipelineStageInfo = {
|
|
8
|
+
id: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
};
|
|
7
11
|
export type CreatePipelineParams = {
|
|
8
12
|
connection: Connection;
|
|
9
13
|
name: string;
|
|
@@ -14,6 +18,7 @@ export type CreatePipelineParams = {
|
|
|
14
18
|
bitbucketWorkspace?: string;
|
|
15
19
|
bitbucketProjectKey?: string;
|
|
16
20
|
stages?: string[];
|
|
21
|
+
projectIds?: string[];
|
|
17
22
|
};
|
|
18
23
|
export type CreatePipelineResult = {
|
|
19
24
|
success: boolean;
|
|
@@ -21,6 +26,7 @@ export type CreatePipelineResult = {
|
|
|
21
26
|
name?: string;
|
|
22
27
|
status?: string;
|
|
23
28
|
repository?: RepoInfo;
|
|
29
|
+
stages?: PipelineStageInfo[];
|
|
24
30
|
error?: string;
|
|
25
31
|
};
|
|
26
32
|
/**
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { execSync } from 'node:child_process';
|
|
17
|
+
import { fetchPipelineStages, computeFirstStageId } from './pipelineUtils.js';
|
|
17
18
|
const DEFAULT_STAGE_NAMES = ['Integration', 'UAT', 'Staging', 'Production'];
|
|
18
19
|
/**
|
|
19
20
|
* Detects repo type from a URL. Returns 'github' or 'bitbucket', or undefined.
|
|
@@ -86,7 +87,7 @@ export class GitHubOwnerNotFoundError extends Error {
|
|
|
86
87
|
* POST /services/data/v{version}/connect/devops/pipelines
|
|
87
88
|
*/
|
|
88
89
|
export async function createPipeline(params) {
|
|
89
|
-
const { connection, name, repo, repoType, createRepo, repoOwner, bitbucketWorkspace, bitbucketProjectKey, stages } = params;
|
|
90
|
+
const { connection, name, repo, repoType, createRepo, repoOwner, bitbucketWorkspace, bitbucketProjectKey, stages, projectIds, } = params;
|
|
90
91
|
const path = `/services/data/v${connection.getApiVersion()}/connect/devops/pipelines`;
|
|
91
92
|
const stageNames = stages && stages.length > 0 ? stages : DEFAULT_STAGE_NAMES;
|
|
92
93
|
const payload = {
|
|
@@ -94,6 +95,9 @@ export async function createPipeline(params) {
|
|
|
94
95
|
vcsType: repoType,
|
|
95
96
|
stages: stageNames.map((stageName) => ({ name: stageName })),
|
|
96
97
|
};
|
|
98
|
+
if (projectIds && projectIds.length > 0) {
|
|
99
|
+
payload.projectIds = projectIds;
|
|
100
|
+
}
|
|
97
101
|
if (createRepo) {
|
|
98
102
|
payload.createVcsRepo = true;
|
|
99
103
|
payload.vcsRepoName = repo;
|
|
@@ -127,6 +131,42 @@ export async function createPipeline(params) {
|
|
|
127
131
|
repoType,
|
|
128
132
|
created: createRepo ?? false,
|
|
129
133
|
},
|
|
134
|
+
stages: await fetchCreatedStages(connection, data.id),
|
|
130
135
|
};
|
|
131
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Fetches the stages of a newly created pipeline, ordered along the promotion path.
|
|
139
|
+
* Best-effort: the pipeline already exists, so a failed lookup returns undefined
|
|
140
|
+
* rather than failing the create.
|
|
141
|
+
*/
|
|
142
|
+
async function fetchCreatedStages(connection, pipelineId) {
|
|
143
|
+
try {
|
|
144
|
+
const stages = await fetchPipelineStages(connection, pipelineId);
|
|
145
|
+
return orderStages(stages).map((s) => ({ id: s.Id, name: s.Name }));
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Orders stages from the first stage following the NextStageId chain. Falls back to
|
|
153
|
+
* the original query order if the chain can't be resolved into a single sequence.
|
|
154
|
+
*/
|
|
155
|
+
function orderStages(stages) {
|
|
156
|
+
const firstId = computeFirstStageId(stages);
|
|
157
|
+
if (!firstId)
|
|
158
|
+
return stages;
|
|
159
|
+
const ordered = [];
|
|
160
|
+
const seen = new Set();
|
|
161
|
+
let currentId = firstId;
|
|
162
|
+
while (currentId && !seen.has(currentId)) {
|
|
163
|
+
const stage = stages.find((s) => s.Id === currentId);
|
|
164
|
+
if (!stage)
|
|
165
|
+
break;
|
|
166
|
+
ordered.push(stage);
|
|
167
|
+
seen.add(currentId);
|
|
168
|
+
currentId = stage.NextStageId ?? undefined;
|
|
169
|
+
}
|
|
170
|
+
return ordered.length === stages.length ? ordered : stages;
|
|
171
|
+
}
|
|
132
172
|
//# sourceMappingURL=createPipeline.js.map
|