4.3.0 • Published 2 months ago

screwdriver-workflow-parser v4.3.0

Weekly downloads
69
License
BSD-3-Clause
Repository
github
Last release
2 months ago

Workflow Parser

Version Downloads Build Status Open Issues License

Parses and converts pipeline configuration into a workflow graph

Usage

npm install screwdriver-workflow-parser
const { getWorkflow, getNextJobs, hasCycle } = require('screwdriver-workflow-parser');

// Calculate the directed graph workflow from a pipeline config (and parse legacy workflows)
const workflowGraph = getWorkflow(pipelineConfig, { useLegacy: true });

/* 
{ 
    nodes: [{ name: '~pr'}, { name: '~commit'}, { name: 'main' }], 
    edges: [{ src: '~pr', dest: 'main'}, { src: '~commit', dest: 'main'}] 
}
*/

// Get a list of job names to start as a result of a commit event, e.g. [ 'a', 'b' ]
const commitJobsToTrigger = getNextJobs(workflowGraph, { trigger: '~commit' });

// Get a list of job names to start as a result of a pull-request event, e.g. [ 'PR-123:a' ]
const prJobsToTrigger = getNextJobs(workflowGraph, { trigger: '~pr', prNum: 123 });

// Check to see if a given workflow graph has a loop in it. A -> B -> A
if (hasCycle(workflowGraph)) {
    console.error('Graph contains a loop.');
}

Testing

npm test

License

Code licensed under the BSD 3-Clause license. See LICENSE file for terms.

4.3.0

2 months ago

4.2.1

2 months ago

4.2.0

2 months ago

4.1.3

3 months ago

4.1.2

4 months ago

4.1.1

6 months ago

4.1.0

7 months ago

4.0.0

1 year ago

3.2.1

2 years ago

3.2.0

3 years ago

3.1.3

3 years ago

3.1.2

3 years ago

3.1.1

4 years ago

3.1.0

4 years ago

3.0.0

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

5 years ago

1.8.9

5 years ago

1.8.8

5 years ago

1.8.7

5 years ago

1.8.6

5 years ago

1.8.5

5 years ago

1.8.4

5 years ago

1.8.3

5 years ago

1.8.2

5 years ago

1.8.1

5 years ago

1.8.0

5 years ago

1.7.0

5 years ago

1.6.1

6 years ago

1.6.0

6 years ago

1.5.0

6 years ago

1.4.2

6 years ago

1.4.1

6 years ago

1.4.0

7 years ago

1.3.0

7 years ago

1.2.1

7 years ago

1.2.0

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.0

7 years ago

0.0.1

7 years ago