Run 'package-and-qa' tests as a child pipeline in Gitlab project
Following proposition from architectural bi weekly meeting:
Architectural change proposal for 'package-and-qa' pipeline: Currently the 'package-and-qa' pipeline is triggered 4 downstream pipelines deep. This makes it quite confusing and inconvenient to follow through. Proposal is to change the architecture of it and make it similar to the review-app pipeline and move into the gitlab project itself. Technical implementation also feeds into previous quarter OKR regarding common source of truth for all qa job definitions as it would require moving definitions of jobs to pipeline-common project
Such an approach should have several benefits:
- Better test result integration in merge request pipelines, easier navigation etc.
- We can properly freeze the state of whole pipeline chain thus resolving issues when security releases with older test code trigger latest state of
gitlab-qaproject/gem and it's pipeline setup - Easier testing and development of pipelines themselves
- Implementation would require moving job definitions to
pipeline-commonthus achieving SSOT for all e2e test job definitions
Concerns:
- Requires adding more test related CI environment variables currently stored in
gitlab-qa-mirrorproject - Adding specific runner just for
package-and-qatests to Gitlab project (not actually sure if it's a concern) - Is there a performance penalty running more jobs in scope of single project even when using dedicated runner?
Potential final design graph:
graph TB
A1 -.->|once done, can be triggered| A2
A2 -.->|`build-package` job starts a child pipeline to build omnibus image| B1
A2 -.->|`run-qa` job starts dynamically generated child pipeline once omnibus image is built.<br> waiting on omnibus is implemented using needs relation<br>to keep structure flat and readable| A3
subgraph "`gitlab-org/gitlab` pipeline"
A1[`build-images` stage<br>`build-qa-image` and `build-assets-image` jobs]
A2["`qa` stage<br>`build-package` job<br>`start-package-and-qa` job"]
A3["`test` stage<br>`run-qa` jobs"]
end
subgraph "`gitlab-org/build/omnibus-gitlab-mirror` pipeline"
B1[`Trigger-docker` stage<br>`Trigger:gitlab-docker` jobs]
end
Edited by andrey