mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-19 08:02:55 +00:00
feat: adjust reminder for unfixed merge requests
This commit is contained in:
@@ -10,7 +10,7 @@ import {
|
||||
import {WebClient} from '@slack/client';
|
||||
import {asyncPool} from 'async-pool-native/dist/async-pool';
|
||||
import {logger} from '../common';
|
||||
import {GROUPS} from '../configuration';
|
||||
import {GROUPS, NOTE_PREFIX} from '../configuration';
|
||||
|
||||
export async function remind(api: Api): Promise<void> {
|
||||
// get list of open merge requests
|
||||
@@ -47,6 +47,34 @@ export async function remind(api: Api): Promise<void> {
|
||||
// get merge request approval
|
||||
const approval = await api.getMergeRequestApproval(mergeRequest.project_id, mergeRequest.iid);
|
||||
|
||||
// get merge request discussions
|
||||
const discussions = await api.getMergeRequestDiscussions(mergeRequest.project_id, mergeRequest.iid);
|
||||
|
||||
// check if at least one of the discussions is unresolved
|
||||
const hasUnresolvedDiscussions = discussions.some((discussion) => {
|
||||
return discussion.notes.some((note) => {
|
||||
return note.resolvable && !note.resolved;
|
||||
});
|
||||
});
|
||||
|
||||
if (hasUnresolvedDiscussions) {
|
||||
// send message to slack
|
||||
await client.chat.postMessage({
|
||||
channel: 'C762UG76Z',
|
||||
text: `Merge request '${mergeRequest.title}' has unresolved discussions! See ${mergeRequest.web_url}!`,
|
||||
});
|
||||
|
||||
// create note in merge request
|
||||
await api.createNote(
|
||||
mergeRequest.project_id,
|
||||
Scope.MERGE_REQUESTS,
|
||||
mergeRequest.iid,
|
||||
`${NOTE_PREFIX} Please resolve pending discussions, @${mergeRequest.author.username}!`,
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (approval.merge_status === MergeRequestMergeStatus.CAN_BE_MERGED) {
|
||||
if (approval.approvals_left > 0) {
|
||||
logger.warn(`Merge request '${mergeRequest.title}' needs more approvals!`);
|
||||
@@ -76,7 +104,7 @@ export async function remind(api: Api): Promise<void> {
|
||||
mergeRequest.project_id,
|
||||
Scope.MERGE_REQUESTS,
|
||||
mergeRequest.iid,
|
||||
`Please review, ${possibleApprovers}!`,
|
||||
`${NOTE_PREFIX} Please review, ${possibleApprovers}!`,
|
||||
);
|
||||
} else {
|
||||
logger.log(`Merge request '${mergeRequest.title}' is ready to be merged!`);
|
||||
@@ -97,7 +125,7 @@ export async function remind(api: Api): Promise<void> {
|
||||
mergeRequest.project_id,
|
||||
Scope.MERGE_REQUESTS,
|
||||
mergeRequest.iid,
|
||||
`Merge request is ready to be merged, ${possibleMergers}!`,
|
||||
`${NOTE_PREFIX} Merge request is ready to be merged, ${possibleMergers}!`,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user