Build cascading train refs for parallel execution of Pipelines for merge trains
-
Review changes -
-
Download -
Patches
-
Plain diff
What does this MR do?
As we supported arbitrary refs creation in the previous merge request https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/14298, we can now create cascading merge refs in refs/train
to run Pipelines for merge trains in parallel.
In this iteration, we support up-to 4 concurrent pipeline runs. Here is the overview of the process flow:
- User adds MR1, MR2, MR3, MR4 and MR5 to a train.
- The system creates the train ref
refs/merge-requests/1/train
frommr1.diff_head_sha
andmr1.target_branch_ref
. - The system creates a pipeline run on
refs/merge-requests/1/train
. - The system creates the train ref
refs/merge-requests/2/train
frommr2.diff_head_sha
andmr1.train_ref_path
. - The system creates a pipeline run on
refs/merge-requests/2/train
. - The system creates the train ref
refs/merge-requests/3/train
frommr3.diff_head_sha
andmr2.train_ref_path
. - The system creates a pipeline run on
refs/merge-requests/3/train
. - The system creates the train ref
refs/merge-requests/4/train
frommr4.diff_head_sha
andmr3.train_ref_path
. - The system creates a pipeline run on
refs/merge-requests/4/train
. - The system does not create any train refs
refs/merge-requests/5/train
because it's out of concurrency factor. - The system does not create any pipelines on
refs/merge-requests/5/train
because it's out of concurrency factor.
Related https://gitlab.com/gitlab-org/gitlab-ee/issues/11222 gitaly!1210 (merged)
Feature Flag
This behavior can be reverted by Feature.disable(:merge_trains_parallel_pipelines)
. After it's reverted, pipeline runs one at a time.
Extra datapoint
Today the number of projects which enables merge trains is still very low.
gitlabhq_production=> select COUNT(*) from project_ci_cd_settings WHERE merge_trains_enabled = true;
count
-------
28
(1 row)
Does this MR meet the acceptance criteria?
Conformity
-
Changelog entry -
Documentation created/updated or follow-up review issue created -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Performance and testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. - [-] Tested in all supported browsers
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
- [-] Label as security and @ mention
@gitlab-com/gl-security/appsec
- [-] The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
- [-] Security reports checked/validated by a reviewer from the AppSec team
Merge request reports
- version 7534b30a29
- version 74b5ac43d6
- version 73e3013a9b
- version 72a39abdbe
- version 71166c4ed3
- version 702c90cdba
- version 6959e18c87
- version 68e0cb5f2e
- version 67518c9530
- version 661a462017
- version 65bc8b10be
- version 64c0de9c02
- version 630bc462db
- version 6240444a34
- version 619283b9b0
- version 60f2dcd4c0
- version 59e7f5876f
- version 58cc4f1765
- version 576aac3214
- version 56b00cce01
- version 55d4f9754d
- version 54d4f9754d
- version 537c72da76
- version 52705b6f14
- version 51b0813bff
- version 5017371132
- version 4916478230
- version 48cc4cd0a1
- version 47cc4cd0a1
- version 46cc4cd0a1
- version 45cc4cd0a1
- version 44cc4cd0a1
- version 43cc4cd0a1
- version 42cc4cd0a1
- version 41cc4cd0a1
- version 40cc4cd0a1
- version 39cc4cd0a1
- version 38cc4cd0a1
- version 37cc4cd0a1
- version 36cc4cd0a1
- version 35cc4cd0a1
- version 34cc4cd0a1
- version 33cc4cd0a1
- version 32cc4cd0a1
- version 31cc4cd0a1
- version 30cc4cd0a1
- version 297a838513
- version 28dfb5ad8f
- version 27dfb5ad8f
- version 263f7c8656
- version 25c876dc53
- version 24c876dc53
- version 23ac0223a0
- version 22be364d2e
- version 214a12e5e6
- version 203a048437
- version 196cdf60be
- version 186cdf60be
- version 176cdf60be
- version 166cdf60be
- version 156cdf60be
- version 146cdf60be
- version 136cdf60be
- version 126cdf60be
- version 116cdf60be
- version 106cdf60be
- version 96cdf60be
- version 86cdf60be
- version 76cdf60be
- version 66cdf60be
- version 56cdf60be
- version 42aca4012
- version 32aca4012
- version 29b1ca315
- version 10361445e
- master (base)
- latest version39a905981 commit,
- version 7534b30a291 commit,
- version 74b5ac43d61 commit,
- version 73e3013a9b1 commit,
- version 72a39abdbe1 commit,
- version 71166c4ed31 commit,
- version 702c90cdba1 commit,
- version 6959e18c871 commit,
- version 68e0cb5f2e1 commit,
- version 67518c95301 commit,
- version 661a4620171 commit,
- version 65bc8b10be1 commit,
- version 64c0de9c021 commit,
- version 630bc462db1 commit,
- version 6240444a341 commit,
- version 619283b9b01 commit,
- version 60f2dcd4c01 commit,
- version 59e7f5876f1 commit,
- version 58cc4f17651 commit,
- version 576aac32141 commit,
- version 56b00cce011 commit,
- version 55d4f9754d1 commit,
- version 54d4f9754d1 commit,
- version 537c72da761 commit,
- version 52705b6f141 commit,
- version 51b0813bff1 commit,
- version 50173711321 commit,
- version 49164782301 commit,
- version 48cc4cd0a12 commits,
- version 47cc4cd0a12 commits,
- version 46cc4cd0a12 commits,
- version 45cc4cd0a12 commits,
- version 44cc4cd0a12 commits,
- version 43cc4cd0a12 commits,
- version 42cc4cd0a12 commits,
- version 41cc4cd0a12 commits,
- version 40cc4cd0a12 commits,
- version 39cc4cd0a12 commits,
- version 38cc4cd0a12 commits,
- version 37cc4cd0a12 commits,
- version 36cc4cd0a12 commits,
- version 35cc4cd0a12 commits,
- version 34cc4cd0a12 commits,
- version 33cc4cd0a12 commits,
- version 32cc4cd0a12 commits,
- version 31cc4cd0a12 commits,
- version 30cc4cd0a11 commit,
- version 297a8385131 commit,
- version 28dfb5ad8f2 commits,
- version 27dfb5ad8f1 commit,
- version 263f7c86561 commit,
- version 25c876dc532 commits,
- version 24c876dc531 commit,
- version 23ac0223a01 commit,
- version 22be364d2e1 commit,
- version 214a12e5e61 commit,
- version 203a0484371 commit,
- version 196cdf60be2 commits,
- version 186cdf60be2 commits,
- version 176cdf60be2 commits,
- version 166cdf60be2 commits,
- version 156cdf60be2 commits,
- version 146cdf60be2 commits,
- version 136cdf60be2 commits,
- version 126cdf60be2 commits,
- version 116cdf60be2 commits,
- version 106cdf60be2 commits,
- version 96cdf60be2 commits,
- version 86cdf60be2 commits,
- version 76cdf60be2 commits,
- version 66cdf60be2 commits,
- version 56cdf60be1 commit,
- version 42aca40121 commit,
- version 32aca40121 commit,
- version 29b1ca3151 commit,
- version 10361445e1 commit,
- Side-by-side
- Inline