/
status-checks.ts
98 lines (89 loc) · 2.51 KB
/
status-checks.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import type { RenovateConfig } from '../../config/types';
import { logger } from '../../logger';
import { platform } from '../../platform';
import { BranchStatus } from '../../types';
import {
MergeConfidence,
isActiveConfidenceLevel,
} from '../../util/merge-confidence';
export async function resolveBranchStatus(
branchName: string,
ignoreTests = false
): Promise<BranchStatus> {
logger.debug(
`resolveBranchStatus(branchName=${branchName}, ignoreTests=${ignoreTests})`
);
if (ignoreTests) {
logger.debug('Ignore tests. Return green');
return BranchStatus.green;
}
const status = await platform.getBranchStatus(branchName);
logger.debug(`Branch status ${status}`);
return status;
}
async function setStatusCheck(
branchName: string,
context: string,
description: string,
state: BranchStatus,
url: string
): Promise<void> {
const existingState = await platform.getBranchStatusCheck(
branchName,
context
);
if (existingState === state) {
logger.debug(`Status check ${context} is already up-to-date`);
} else {
logger.debug(`Updating ${context} status check state to ${state}`);
await platform.setBranchStatus({
branchName,
context,
description,
state,
url,
});
}
}
export type StabilityConfig = RenovateConfig & {
stabilityStatus?: BranchStatus;
branchName: string;
};
export async function setStability(config: StabilityConfig): Promise<void> {
if (!config.stabilityStatus) {
return;
}
const context = `renovate/stability-days`;
const description =
config.stabilityStatus === BranchStatus.green
? 'Updates have met stability days requirement'
: 'Updates have not met stability days requirement';
await setStatusCheck(
config.branchName,
context,
description,
config.stabilityStatus,
config.productLinks.documentation
);
}
export type ConfidenceConfig = RenovateConfig & {
confidenceStatus?: BranchStatus;
minimumConfidence?: MergeConfidence;
};
export async function setConfidence(config: ConfidenceConfig): Promise<void> {
if (!isActiveConfidenceLevel(config.minimumConfidence)) {
return;
}
const context = `renovate/merge-confidence`;
const description =
config.confidenceStatus === BranchStatus.green
? 'Updates have met Merge Confidence requirement'
: 'Updates have not met Merge Confidence requirement';
await setStatusCheck(
config.branchName,
context,
description,
config.confidenceStatus,
config.productLinks.documentation
);
}