diff options
author | Chris Wilson <chris@chrisjwilson.com> | 2017-04-24 16:53:43 +1000 |
---|---|---|
committer | Chris Wilson <chris@chrisjwilson.com> | 2017-04-24 20:51:05 +1000 |
commit | e670cb271ed61cde68a932ce911553d7c8e4a6d5 (patch) | |
tree | f18345c0787cadb8e72de528114b3a63c2d6688a /lib/api | |
parent | c768026474b9dff9f6f988372e4eefb85b1d8be9 (diff) | |
download | gitlab-ce-mrchrisw-22740-merge-api.tar.gz |
Fix updating merge_when_build_succeeds via merge API endpointmrchrisw-22740-merge-api
When updating a merge request via the `/merge` endpoint we
check the `mergeable` and `mergeable_state` status, these will return
`false` if the application option only_allow_merge_if_pipeline_succeeds is
enabled. We should skip CI checks if the request uses the
merge_when_pipeline_succeeds param
Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/22740
Diffstat (limited to 'lib/api')
-rw-r--r-- | lib/api/merge_requests.rb | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index cb7aec47cf0..c7dc2ea336f 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -197,14 +197,15 @@ module API end put ':id/merge_requests/:merge_request_iid/merge' do merge_request = find_project_merge_request(params[:merge_request_iid]) + merge_when_pipeline_succeeds = to_boolean(params[:merge_when_pipeline_succeeds]) # Merge request can not be merged # because user dont have permissions to push into target branch unauthorized! unless merge_request.can_be_merged_by?(current_user) - not_allowed! unless merge_request.mergeable_state? + not_allowed! unless merge_request.mergeable_state?(skip_ci_check: merge_when_pipeline_succeeds) - render_api_error!('Branch cannot be merged', 406) unless merge_request.mergeable? + render_api_error!('Branch cannot be merged', 406) unless merge_request.mergeable?(skip_ci_check: merge_when_pipeline_succeeds) if params[:sha] && merge_request.diff_head_sha != params[:sha] render_api_error!("SHA does not match HEAD of source branch: #{merge_request.diff_head_sha}", 409) @@ -215,7 +216,7 @@ module API should_remove_source_branch: params[:should_remove_source_branch] } - if params[:merge_when_pipeline_succeeds] && merge_request.head_pipeline && merge_request.head_pipeline.active? + if merge_when_pipeline_succeeds && merge_request.head_pipeline && merge_request.head_pipeline.active? ::MergeRequests::MergeWhenPipelineSucceedsService .new(merge_request.target_project, current_user, merge_params) .execute(merge_request) |