Skip to content

Commit

Permalink
feat(3022): Mark workflow node as virtual if it corresponds to a virt…
Browse files Browse the repository at this point in the history
…ual job (#51)
  • Loading branch information
sagar1312 committed Mar 12, 2024
1 parent d9d3e17 commit 4ddfb98
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 12 deletions.
22 changes: 15 additions & 7 deletions lib/getWorkflow.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,16 +86,24 @@ const calculateNodes = async (jobs, triggerFactory, externalDownstreamOrs, exter
);
}

const annotations = [
{ annotation: 'annotations>screwdriver.cd/displayName', fieldName: 'displayName', default: undefined },
{ annotation: 'annotations>screwdriver.cd/virtualJob', fieldName: 'virtual', default: undefined }
];

return [...nodes].map(name => {
const m = { name };
const displayName = hoek.reach(jobs[name], 'annotations>screwdriver.cd/displayName', {
separator: '>',
default: undefined
});

if (displayName !== undefined) {
m.displayName = displayName;
}
annotations.forEach(({ annotation, fieldName, defaultValue }) => {
const fieldValue = hoek.reach(jobs[name], annotation, {
separator: '>',
default: defaultValue
});

if (fieldValue !== undefined) {
m[fieldName] = fieldValue;
}
});

const stageName = jobNameToStageNameMap[name];

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
},
"dependencies": {
"@hapi/hoek": "^10.0.1",
"screwdriver-data-schema": "^23.0.4"
"screwdriver-data-schema": "^23.1.0"
},
"release": {
"branches": [
Expand Down
16 changes: 12 additions & 4 deletions test/lib/getWorkflow.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -256,11 +256,19 @@ describe('getWorkflow', () => {
describe('should handle stages', async () => {
const PIPELINE_CONFIG = {
jobs: {
'stage@alpha:setup': { requires: ['~commit'], stage: { name: 'alpha' } },
'stage@alpha:setup': {
requires: ['~commit'],
stage: { name: 'alpha' },
annotations: { 'screwdriver.cd/virtualJob': true }
},
'alpha-deploy': { requires: ['stage@alpha:setup'], stage: { name: 'alpha' } },
'alpha-test': { requires: ['alpha-deploy'], stage: { name: 'alpha' } },
'alpha-certify': { requires: ['alpha-test'], stage: { name: 'alpha' } },
'stage@alpha:teardown': { requires: ['alpha-certify'], stage: { name: 'alpha' } },
'stage@alpha:teardown': {
requires: ['alpha-certify'],
stage: { name: 'alpha' },
annotations: { 'screwdriver.cd/virtualJob': true }
},
'stage@beta:setup': { requires: ['~stage@alpha:teardown'], stage: { name: 'beta' } },
'beta-deploy': { requires: ['~stage@beta:setup'], stage: { name: 'beta' } },
'beta-test': { requires: ['~beta-deploy'], stage: { name: 'beta' } },
Expand Down Expand Up @@ -299,11 +307,11 @@ describe('getWorkflow', () => {
nodes: [
{ name: '~pr' },
{ name: '~commit' },
{ name: 'stage@alpha:setup', stageName: 'alpha' },
{ name: 'stage@alpha:setup', stageName: 'alpha', virtual: true },
{ name: 'alpha-deploy', stageName: 'alpha' },
{ name: 'alpha-test', stageName: 'alpha' },
{ name: 'alpha-certify', stageName: 'alpha' },
{ name: 'stage@alpha:teardown', stageName: 'alpha' },
{ name: 'stage@alpha:teardown', stageName: 'alpha', virtual: true },
{ name: 'stage@beta:setup', stageName: 'beta' },
{ name: 'beta-deploy', stageName: 'beta' },
{ name: 'beta-test', stageName: 'beta' },
Expand Down

0 comments on commit 4ddfb98

Please sign in to comment.