Skip to content

Commit 938ce1a

Browse files
authored
feat: allow sourcePaths with pipeline template (#182)
1 parent 3b15798 commit 938ce1a

13 files changed

Lines changed: 39 additions & 10 deletions

lib/phase/merge.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@ const Hoek = require('@hapi/hoek');
44
const clone = require('clone');
55
const TEMPLATE_NAME_REGEX_WITH_NAMESPACE =
66
require('screwdriver-data-schema').config.regex.FULL_TEMPLATE_NAME_WITH_NAMESPACE;
7-
const ALLOWED_JOB_FIELDS_WITH_PIPELINE_TEMPLATE = ['settings', 'requires', 'image', 'environment', 'annotations'];
7+
const ALLOWED_JOB_FIELDS_WITH_PIPELINE_TEMPLATE = [
8+
'settings',
9+
'requires',
10+
'image',
11+
'environment',
12+
'annotations',
13+
'sourcePaths'
14+
];
815
const { merge } = require('./flatten');
916

1017
/**
@@ -117,6 +124,13 @@ function handlePipelineTemplateMergeForJobs(parsedDoc, newPipeline, pipelineTemp
117124
};
118125
}
119126

127+
// Merge job sourcePaths
128+
if (oldJob.sourcePaths || newJob.sourcePaths) {
129+
newJob.sourcePaths = Array.from(
130+
new Set([...(newJob.sourcePaths || []), ...(oldJob.sourcePaths || [])])
131+
);
132+
}
133+
120134
// Merge settings
121135
// Replace settings if empty object
122136
if (Hoek.deepEqual(oldJob.settings, {})) {
@@ -303,6 +317,10 @@ function mergeConfig(parsedDoc, pipelineTemplate) {
303317
newPipeline.shared.image = yamlSharedConfig.image;
304318
}
305319

320+
if (yamlSharedConfig.sourcePaths) {
321+
newPipeline.shared.sourcePaths = yamlSharedConfig.sourcePaths;
322+
}
323+
306324
newPipeline.templateVersionId = pipelineTemplate.id;
307325

308326
return newPipeline;

test/data/pipeline-template-basic-result.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
"requires": [
2727
"~pr",
2828
"~commit"
29-
]
29+
],
30+
"sourcePaths": ["pipeline-template"]
3031
}]
3132
},
3233
"workflowGraph": {

test/data/pipeline-template-with-customized-job-result.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@
7373
"room_a"
7474
]
7575
},
76-
"requires": []
76+
"requires": [],
77+
"sourcePaths": ["pipeline-template", "job"]
7778
}],
7879
"job1": [{
7980
"annotations": {

test/data/pipeline-template-with-customized-job.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ jobs:
77
environment:
88
BAR: baz
99
requires: []
10+
sourcePaths: ["job"]
1011
job1:
1112
image: node:10
1213
settings:

test/data/pipeline-template-with-new-customized-job-result.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@
7474
"room_a"
7575
]
7676
},
77-
"requires": []
77+
"requires": [],
78+
"sourcePaths": ["pipeline-template"]
7879
}],
7980
"job1": [{
8081
"annotations": {

test/data/pipeline-template-with-pipeline-setting-result.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@
8484
"requires": [
8585
"~pr",
8686
"~commit"
87-
]
87+
],
88+
"sourcePaths": ["pipeline-template"]
8889
}],
8990
"job1": [{
9091
"annotations": {

test/data/pipeline-template-with-shared-setting-result.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@
3232
"requires": [
3333
"~pr",
3434
"~commit"
35-
]
35+
],
36+
"sourcePaths": ["shared", "pipeline-template"]
3637
}]
3738
},
3839
"workflowGraph": {

test/data/pipeline-template-with-shared-setting.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@
3636
],
3737
"minimized": true
3838
}
39-
}
39+
},
40+
"sourcePaths": ["pipeline-template"]
4041
}
4142
}
4243
},

test/data/pipeline-template-with-shared-setting.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ shared:
88
slack:
99
channels:
1010
- test
11+
sourcePaths: [ "shared" ]

test/data/pipeline-template-with-template-setting-result.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@
8383
"requires": [
8484
"~pr",
8585
"~commit"
86-
]
86+
],
87+
"sourcePaths": ["pipeline-template"]
8788
}
8889
],
8990
"job1": [{

0 commit comments

Comments
 (0)