Skip to content

Commit f9a1f8a

Browse files
authored
Try to accept MR without pipeline (#23)
1 parent ecbaa62 commit f9a1f8a

File tree

1 file changed

+30
-28
lines changed

1 file changed

+30
-28
lines changed

src/MergeRequestAcceptor.ts

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ export const acceptMergeRequest = async (gitlabApi: GitlabApi, mergeRequest: Mer
152152

153153
let currentPipeline: MergeRequestPipeline | null = mergeRequestInfo.pipeline;
154154

155-
if (currentPipeline === null || currentPipeline.sha !== mergeRequestInfo.sha) {
155+
if (currentPipeline !== null && currentPipeline.sha !== mergeRequestInfo.sha) {
156156
const pipelines = await gitlabApi.getMergeRequestPipelines(mergeRequest.project_id, mergeRequest.iid);
157157
const currentPipelineCandidate = pipelines.find((pipeline) => pipeline.sha === mergeRequestInfo.sha);
158158

@@ -178,37 +178,39 @@ export const acceptMergeRequest = async (gitlabApi: GitlabApi, mergeRequest: Mer
178178
currentPipeline = currentPipelineCandidate;
179179
}
180180

181-
if (currentPipeline.status === PipelineStatus.Running || currentPipeline.status === PipelineStatus.Pending) {
182-
if (!containsLabel(mergeRequestInfo.labels, BotLabels.WaitingForPipeline)) {
183-
tasks.push(
184-
gitlabApi.updateMergeRequest(mergeRequest.project_id, mergeRequest.iid, {
185-
labels: [...filterBotLabels(mergeRequestInfo.labels), BotLabels.WaitingForPipeline].join(','),
186-
}),
187-
);
188-
}
181+
if (currentPipeline !== null) {
182+
if (currentPipeline.status === PipelineStatus.Running || currentPipeline.status === PipelineStatus.Pending) {
183+
if (!containsLabel(mergeRequestInfo.labels, BotLabels.WaitingForPipeline)) {
184+
tasks.push(
185+
gitlabApi.updateMergeRequest(mergeRequest.project_id, mergeRequest.iid, {
186+
labels: [...filterBotLabels(mergeRequestInfo.labels), BotLabels.WaitingForPipeline].join(','),
187+
}),
188+
);
189+
}
189190

190-
console.log(`[MR] Waiting for CI. Current status: ${currentPipeline.status}`);
191-
await Promise.all(tasks);
192-
continue;
193-
}
191+
console.log(`[MR] Waiting for CI. Current status: ${currentPipeline.status}`);
192+
await Promise.all(tasks);
193+
continue;
194+
}
194195

195-
if (currentPipeline.status === PipelineStatus.Canceled) {
196-
console.log(`[MR] pipeline is canceled calling retry`);
197-
await gitlabApi.retryPipeline(mergeRequest.project_id, currentPipeline.id);
198-
numberOfPipelineValidationRetries = defaultPipelineValidationRetries;
199-
continue;
200-
}
196+
if (currentPipeline.status === PipelineStatus.Canceled) {
197+
console.log(`[MR] pipeline is canceled calling retry`);
198+
await gitlabApi.retryPipeline(mergeRequest.project_id, currentPipeline.id);
199+
numberOfPipelineValidationRetries = defaultPipelineValidationRetries;
200+
continue;
201+
}
201202

202-
if (currentPipeline.status === PipelineStatus.Failed) {
203-
return {
204-
kind: AcceptMergeRequestResultKind.FailedPipeline,
205-
mergeRequestInfo,
206-
pipeline: currentPipeline,
207-
};
208-
}
203+
if (currentPipeline.status === PipelineStatus.Failed) {
204+
return {
205+
kind: AcceptMergeRequestResultKind.FailedPipeline,
206+
mergeRequestInfo,
207+
pipeline: currentPipeline,
208+
};
209+
}
209210

210-
if (currentPipeline.status !== PipelineStatus.Success && currentPipeline.status !== PipelineStatus.Skipped) {
211-
throw new Error(`Unexpected pipeline status: ${currentPipeline.status}`);
211+
if (currentPipeline.status !== PipelineStatus.Success && currentPipeline.status !== PipelineStatus.Skipped) {
212+
throw new Error(`Unexpected pipeline status: ${currentPipeline.status}`);
213+
}
212214
}
213215

214216
console.log('[MR] Calling merge request');

0 commit comments

Comments
 (0)