screwdriver-api 8.0.144 → 8.0.145

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "screwdriver-api",
3
- "version": "8.0.144",
3
+ "version": "8.0.145",
4
4
  "description": "API server for the Screwdriver.cd service",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -21,7 +21,7 @@ module.exports = () => ({
21
21
 
22
22
  handler: async (request, h) => {
23
23
  const { buildFactory, jobFactory, eventFactory, pipelineFactory, userFactory } = request.server.app;
24
- const { buildId, causeMessage, creator, sha } = request.payload;
24
+ const { buildId, causeMessage, creator, sha, startAction } = request.payload;
25
25
  const { scmContext, username, scope } = request.auth.credentials;
26
26
  const { scm } = eventFactory;
27
27
  const { isValidToken } = request.server.plugins.pipelines;
@@ -67,8 +67,17 @@ module.exports = () => ({
67
67
  payload.sha = sha;
68
68
  }
69
69
 
70
+ // If you specify a parentEventId in the payload, the metadata will be inherited.
71
+ // Therefore, you should not specify a parentEventId in the payload except when using RESTART.
72
+ // Prevents metadata from transferring when Start from a specific event
70
73
  if (parentEventId) {
71
- payload.parentEventId = parentEventId;
74
+ // eslint-disable-next-line default-case
75
+ switch (startAction) {
76
+ case 'RESTART_FROM_EVENT':
77
+ case 'RESTART_FROM_BUILD': {
78
+ payload.parentEventId = parentEventId;
79
+ }
80
+ }
72
81
  }
73
82
 
74
83
  if (parentBuildId) {
@@ -240,27 +249,11 @@ module.exports = () => ({
240
249
 
241
250
  // If there is parentEvent, pass workflowGraph, meta and sha to payload
242
251
  // Skip PR, for PR builds, we should always start from latest commit
243
- if (payload.parentEventId) {
252
+ if (parentEventId) {
244
253
  const parentEvent = await eventFactory.get(parentEventId);
245
- let mergedParameters = payload.meta.parameters || {};
246
254
 
247
255
  payload.baseBranch = parentEvent.baseBranch || null;
248
256
 
249
- // Merge parameters if they exist in the parent event and not in the payload
250
- if (!payload.meta.parameters && parentEvent.meta && parentEvent.meta.parameters) {
251
- mergedParameters = parentEvent.meta.parameters;
252
- }
253
- delete payload.meta.parameters;
254
-
255
- // Copy meta from parent event if payload.meta is empty except for the parameters
256
- if (Object.keys(payload.meta).length === 0) {
257
- payload.meta = { ...parentEvent.meta };
258
- }
259
-
260
- if (Object.keys(mergedParameters).length > 0) {
261
- payload.meta.parameters = mergedParameters;
262
- }
263
-
264
257
  if (!prNum) {
265
258
  payload.workflowGraph = parentEvent.workflowGraph;
266
259
  payload.sha = parentEvent.sha;
@@ -269,6 +262,29 @@ module.exports = () => ({
269
262
  payload.configPipelineSha = parentEvent.configPipelineSha;
270
263
  }
271
264
  }
265
+
266
+ // eslint-disable-next-line default-case
267
+ switch (startAction) {
268
+ case 'RESTART_FROM_EVENT':
269
+ case 'RESTART_FROM_BUILD': {
270
+ let mergedParameters = payload.meta.parameters || {};
271
+
272
+ // Merge parameters if they exist in the parent event and not in the payload
273
+ if (!payload.meta.parameters && parentEvent.meta && parentEvent.meta.parameters) {
274
+ mergedParameters = parentEvent.meta.parameters;
275
+ }
276
+ delete payload.meta.parameters;
277
+
278
+ // Copy meta from parent event if payload.meta is empty except for the parameters
279
+ if (Object.keys(payload.meta).length === 0) {
280
+ payload.meta = { ...parentEvent.meta };
281
+ }
282
+
283
+ if (Object.keys(mergedParameters).length > 0) {
284
+ payload.meta.parameters = mergedParameters;
285
+ }
286
+ }
287
+ }
272
288
  }
273
289
 
274
290
  const event = await createEvent(payload, request.server);