Skip to content

Commit 09cf38b

Browse files
feat(#11529): throw err if using admin annotation in yaml (#176)
1 parent ad2f9b0 commit 09cf38b

4 files changed

Lines changed: 24 additions & 2 deletions

File tree

index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,10 @@ function validateReservedAnnotation(doc) {
8989
default: {}
9090
});
9191

92+
if (Object.keys(jobAnnotations).some(key => key.startsWith('screwdriver.cd/admin'))) {
93+
throw new Error('Annotations starting with screwdriver.cd/admin are reserved for system use only');
94+
}
95+
9296
warnings = warnings.concat(
9397
Object.keys(jobAnnotations)
9498
.filter(key => {

lib/phase/merge.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const { merge } = require('./flatten');
1212
* @method fetchPipelineTemplate
1313
* @method
1414
* @param {String} pipelineTemplateName Pipeline template name
15-
* @param {PipelineTemplateVersionFactory} config.pipelineTemplateVersionFactory PiplineTemplateVersion Factory to get pipeline templates
15+
* @param {PipelineTemplateVersionFactory} config.pipelineTemplateVersionFactory PipelineTemplateVersion Factory to get pipeline templates
1616
* @param {PipelineTemplateTagFactory} config.pipelineTemplateTagFactory PipelineTemplateTag Factory to get pipeline templates tag
1717
* @param {PipelineTemplateFactory} config.pipelineTemplateFactory PipelineTemplate Factory to get pipeline templates
1818
* @return {Object} Pipeline Template
@@ -337,7 +337,7 @@ function mergeConfig(parsedDoc, pipelineTemplate) {
337337
* Merge pipeline template with screwdriver yaml
338338
* @method
339339
* @param {Object} parsedDoc Document that went through structural parsing
340-
* @param {PipelineTemplateVersionFactory} config.pipelineTemplateVersionFactory PiplineTemplateVersion Factory to get pipeline templates
340+
* @param {PipelineTemplateVersionFactory} config.pipelineTemplateVersionFactory PipelineTemplateVersion Factory to get pipeline templates
341341
* @param {PipelineTemplateTagFactory} config.pipelineTemplateTagFactory PipelineTemplateTag Factory to get pipeline templates tag
342342
* @param {PipelineTemplateFactory} config.pipelineTemplateFactory PipelineTemplate Factory to get pipeline templates
343343
* @returns {Promise} Merged pipeline and warnings
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
jobs:
2+
main:
3+
annotations:
4+
screwdriver.cd/adminA: c
5+
image: node:22
6+
steps:
7+
- install: npm install
8+
requires:
9+
- ~pr
10+
- ~commit

test/index.test.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,14 @@ describe('config parser', () => {
306306
assert.deepEqual(data, JSON.parse(loadData('shared-job-annotations.json')));
307307
}));
308308

309+
it('returns error if job has admin annotations', () =>
310+
parser({ yaml: loadData('admin-job-annotations.yaml'), triggerFactory }).then(data => {
311+
assert.match(
312+
data.errors[0],
313+
/Error: Annotations starting with screwdriver.cd\/admin are reserved for system use only/
314+
);
315+
}));
316+
309317
it('job-level sourcePaths override shared-level sourcePaths', () =>
310318
parser({ yaml: loadData('pipeline-with-sourcePaths.yaml'), triggerFactory }).then(data => {
311319
assert.deepEqual(data, JSON.parse(loadData('pipeline-with-sourcePaths.json')));

0 commit comments

Comments
 (0)