@@ -20,7 +20,7 @@ import { JobStatus } from './generated/graphqlgen';
2020
2121export enum AcceptMergeRequestResultKind {
2222 SuccessfullyMerged ,
23- ClosedMergeRequest ,
23+ NotOpenMergeRequest ,
2424 ReassignedMergeRequest ,
2525 CanNotBeMerged ,
2626 HasConflict ,
@@ -47,8 +47,8 @@ interface SuccessResponse extends Response {
4747 mergeRequestInfo : MergeRequestInfo ;
4848}
4949
50- interface ClosedMergeRequestResponse extends Response {
51- kind : AcceptMergeRequestResultKind . ClosedMergeRequest ;
50+ interface NotOpenMergeRequestResponse extends Response {
51+ kind : AcceptMergeRequestResultKind . NotOpenMergeRequest ;
5252 mergeRequestInfo : MergeRequestInfo ;
5353}
5454
@@ -129,7 +129,7 @@ interface PipelineInProgressResponse extends Response {
129129
130130export type AcceptMergeRequestResult =
131131 | SuccessResponse
132- | ClosedMergeRequestResponse
132+ | NotOpenMergeRequestResponse
133133 | ReassignedMergeRequestResponse
134134 | CanNotBeMergedResponse
135135 | HasConflictResponse
@@ -143,7 +143,7 @@ export type AcceptMergeRequestResult =
143143
144144export type MergeMergeRequestResult =
145145 | SuccessResponse
146- | ClosedMergeRequestResponse
146+ | NotOpenMergeRequestResponse
147147 | ReassignedMergeRequestResponse
148148 | CanNotBeMergedResponse
149149 | HasConflictResponse
@@ -233,18 +233,14 @@ export const acceptMergeRequest = async (
233233 } ;
234234 }
235235
236- if ( mergeRequestInfo . state === MergeState . Closed ) {
236+ if ( mergeRequestInfo . state !== MergeState . Opened ) {
237237 return {
238- kind : AcceptMergeRequestResultKind . ClosedMergeRequest ,
238+ kind : AcceptMergeRequestResultKind . NotOpenMergeRequest ,
239239 mergeRequestInfo,
240240 user,
241241 } ;
242242 }
243243
244- if ( mergeRequestInfo . state !== MergeState . Opened ) {
245- throw new Error ( `Unexpected MR status: ${ mergeRequestInfo . state } ` ) ;
246- }
247-
248244 if ( mergeRequestInfo . detailed_merge_status === DetailedMergeStatus . DiscussionsNotResolved ) {
249245 return {
250246 kind : AcceptMergeRequestResultKind . UnresolvedDiscussion ,
@@ -449,7 +445,7 @@ export const runAcceptingMergeRequest = async (
449445 ) ;
450446 if (
451447 mergeResponse . kind === AcceptMergeRequestResultKind . SuccessfullyMerged ||
452- mergeResponse . kind === AcceptMergeRequestResultKind . ClosedMergeRequest ||
448+ mergeResponse . kind === AcceptMergeRequestResultKind . NotOpenMergeRequest ||
453449 mergeResponse . kind === AcceptMergeRequestResultKind . Unauthorized ||
454450 mergeResponse . kind === AcceptMergeRequestResultKind . WorkInProgress ||
455451 mergeResponse . kind === AcceptMergeRequestResultKind . UnresolvedDiscussion ||
@@ -520,6 +516,19 @@ export const runAcceptingMergeRequest = async (
520516 await gitlabApi . getPipelineJobs ( mergeRequestInfo . project_id , currentPipeline . id ) ,
521517 ) ;
522518
519+ // Mark pipeline as failed when a failed job is found
520+ const failedJob = jobs . find (
521+ ( job ) => ! job . allow_failure && job . status === PipelineJobStatus . Failed ,
522+ ) ;
523+ if ( failedJob !== undefined ) {
524+ return {
525+ kind : AcceptMergeRequestResultKind . FailedPipeline ,
526+ mergeRequestInfo,
527+ user,
528+ pipeline : currentPipeline ,
529+ } ;
530+ }
531+
523532 const manualJobsToRun = jobs . filter (
524533 ( job ) => PipelineJobStatus . Manual === job . status && ! job . allow_failure ,
525534 ) ;
0 commit comments