Resolve "Misleading message displays when MR request is first submitted"
What does this MR do?
This is the first part of a 2 part improvement to make the MR merge widget better reflect the reality of the process when pipeline must succeed
option is turned on.
MR | Changes |
---|---|
|
Change the misleading message in ready_to_merge widget to be clearer |
[Part II] | Add a loading state to the ready_to_merge widget so that we show it as checking availability for one minute before showing the generic message implemented in part 1. |
Currently the issue we are seeing is if a project has Pipeline must succeed
option turned on, when the MR is created, there are no pipelines yet (being processed by the runner) and so we get a cryptic error message that we are "unable to merge, please resolve the following items". So we want to implement a message that says that we are waiting after the pipeline. This however is not easily doable as we can't differentiate if:
- A project has internal CI setup, and we are waiting after the pipeline
- The project has external CI setup, and we are waiting after the pipeline
- The user has a settings conflict where
Pipeline must succeed
is true, but there are no CI configured at all.
Because of this, we opted for a generic message that list why you might be blocked (either you are waiting after the result of your pipeline, or your configuration is invalid).
We had discussed adding some BE logic to allow us to know if there is a gitlab-ci.yml
file in the project to give more accurate message, but that was a very expensive operation so we decided against it (see: #216048 (comment 367467054))
Issue: #216048 (closed)
Chart for conditions related to ready_to_merge
widget
Screenshots
Before
After
Does this MR meet the acceptance criteria?
Conformity
-
Changelog entry -
Documentation (if required) -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Availability and Testing
Test that the states are all properly covered in unit tests.