Cannot choose "Add to Merge Train" when the latest pipeline is a pipeline for merge train and it's running
Problem
There is an edge case in the merge train usability.
- A user adds a merge request to a merge train. It creates a new pipeline for merge train.
- A user accidentally removes the merge request from the merge train.
- A user tries to re-add the merge request to a merge train. However, it is not possible because "Add to Merge Train When Pipeline Succeeds" is the only available option, given the latest pipeline is running.
But more over, it doesn't make sense to set ATMTWPS to a previously running pipeline for merge train. In this case, users should be able to click "Add To Merge Train" option regardless of its pipeline state.
Proposal
If the latest pipeline in the merge request, the system allows users to choose "Add To Merge Train" regardless of its running state.
diff --git a/ee/app/services/auto_merge/merge_train_service.rb b/ee/app/services/auto_merge/merge_train_service.rb
index 56a03e409b0..6317b62fd1c 100644
--- a/ee/app/services/auto_merge/merge_train_service.rb
+++ b/ee/app/services/auto_merge/merge_train_service.rb
@@ -42,7 +42,7 @@ module AutoMerge
def available_for?(merge_request)
return false unless merge_request.project.merge_trains_enabled?
return false if merge_request.for_fork?
- return false unless merge_request.actual_head_pipeline&.complete?
+ return false unless merge_request.actual_head_pipeline&.complete? || merge_request.actual_head_pipeline.merge_train_pipeline?
return false unless merge_request.mergeable_state?(skip_ci_check: true)
true
Edited by Shinya Maeda