@@ -299,16 +299,15 @@ export const acceptMergeRequest = async (
299299 } ;
300300 }
301301
302+ // the latest pipeline is incomplete / has failed
302303 if (
303- [ DetailedMergeStatus . CiMustPass , DetailedMergeStatus . CiStillRunning ] . includes (
304- mergeRequestInfo . detailed_merge_status ,
305- )
304+ mergeRequestInfo . head_pipeline !== null &&
305+ incompletePipelineStatuses . includes ( mergeRequestInfo . head_pipeline . status )
306306 ) {
307307 return {
308- kind : AcceptMergeRequestResultKind . PipelineInProgress ,
308+ kind : AcceptMergeRequestResultKind . CanNotBeMerged ,
309309 mergeRequestInfo,
310310 user,
311- pipeline : mergeRequestInfo . head_pipeline ,
312311 } ;
313312 }
314313
@@ -324,6 +323,19 @@ export const acceptMergeRequest = async (
324323 } ;
325324 }
326325
326+ if (
327+ [ DetailedMergeStatus . CiMustPass , DetailedMergeStatus . CiStillRunning ] . includes (
328+ mergeRequestInfo . detailed_merge_status ,
329+ )
330+ ) {
331+ return {
332+ kind : AcceptMergeRequestResultKind . PipelineInProgress ,
333+ mergeRequestInfo,
334+ user,
335+ pipeline : mergeRequestInfo . head_pipeline ,
336+ } ;
337+ }
338+
327339 const useSquash = mergeRequestInfo . labels . includes ( config . SKIP_SQUASHING_LABEL )
328340 ? false
329341 : config . SQUASH_MERGE_REQUEST ;
@@ -506,6 +518,14 @@ export const runAcceptingMergeRequest = async (
506518 }
507519
508520 const currentPipeline = mergeRequestInfo . head_pipeline ;
521+ if ( currentPipeline !== null && currentPipeline . status === PipelineStatus . Failed ) {
522+ return {
523+ kind : AcceptMergeRequestResultKind . FailedPipeline ,
524+ mergeRequestInfo,
525+ user,
526+ pipeline : currentPipeline ,
527+ } ;
528+ }
509529
510530 if (
511531 currentPipeline !== null &&
@@ -618,15 +638,6 @@ export const runAcceptingMergeRequest = async (
618638 return ;
619639 }
620640
621- if ( currentPipeline . status === PipelineStatus . Failed ) {
622- return {
623- kind : AcceptMergeRequestResultKind . FailedPipeline ,
624- mergeRequestInfo,
625- user,
626- pipeline : currentPipeline ,
627- } ;
628- }
629-
630641 if (
631642 currentPipeline . status !== PipelineStatus . Success &&
632643 currentPipeline . status !== PipelineStatus . Skipped &&
0 commit comments