2020-07: Pipeline Architecture


As the complexity of code generation grew, and with a partial view of the complexity yet to come, it became clear that we were facing a challenge. Each additional required function was making integration and testing progressively more difficult.

We also have the requirement to support a parallel pipeline that generates code appropriate for CrossPlane integration, and have a strong desire for an approach that minimizes the amount of ongoing maintenance.

Introducing a formal pipeline architecture, where each function forms a distinct pipeline stage, solves these problems.

  • Each pipeline stage can (in theory, at least) be tested independently, improving our confidence in the functionality

  • Dependencies between stages can be explicitly declared, allowing the validity of the pipeline to be checked

  • A single factory method can create both required pipeline variants




Pipeline introduced in PR#171.

Stage prerequisites introduced in PR#366 and postrequisites in PR#1541.


Individual pipeline stages are independently tested, but some require considerable set up to create the expected initial state required for execution. The addition of mini-pipelines in PR#1649 partially mitigates this.


Pipeline (software) on Wikipedia