Implement test-pipeline and design default template + reference template to use DAGs
Currently we use Parent-/Child-pipelines because of the technically logic distinction and parallelism of those pipelines and the logical structure of the resulting configuration files.
Pros:
- It's possible to rely on stages ordering defined in a template and do not interfere between different pipelines
- Separate pipeline files are more independent as compared to
needs
approach, i.e. allow independent include directives - Separate pipeline files do not interfere with
default
,variables
and any other top-level constructs - Parent pipeline could define a set of variables for overall child pipeline (kind of object instantiation)
Cons:
- Cancellation of the parent pipeline do not affect running of child pipelines and vice versa
- Parts of pipeline are represented as separate pipelines but there is no way to see the big picture (it's inconvenient)
The alternative would be the use of DAGs.
Pros:
- Great flexibility to compose any pipeline you need (i.e. labs project consist of two completly unrelated pipelines)
- All the jobs are conviniently displayed and easily navigated in GitLab web interface, there is even graph view
Cons:
- It's not possible to reliably define dependencies in a template (they wouldn't work), instances have to define deps
- It requires to avoid include of template files from multiple places (counter-intuitive include in top-level yaml file)
Adopter projects currently may choose one over the other.
See #37 (comment 4340) for more information.