Skip to content

Commit 511930a

Browse files
authored
Canary tasks CI - check Succeeded or PartiallySucceeded (#19406)
1 parent d93a4e1 commit 511930a

File tree

1 file changed

+37
-17
lines changed
  • ci/ci-test-tasks/test-and-verify-v2/src

1 file changed

+37
-17
lines changed

ci/ci-test-tasks/test-and-verify-v2/src/index.ts

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,26 @@ import { fetchBuildStatus, retryFailedJobsInBuild } from './helpers.Build';
55
import { fetchPipelines } from './helpers.Pipeline';
66
import { getBuildConfigs } from './helpers';
77

8-
interface BuildResult { succeeded: boolean; message: string }
8+
interface BuildResult { result: string; message: string }
99

1010
const DISABLED = 'disabled';
1111

12+
const buildResultCode = {
13+
0: 'None',
14+
2: 'Succeeded',
15+
4: 'PartiallySucceeded',
16+
8: 'Failed',
17+
32: 'Canceled'
18+
};
19+
20+
const buildResultEnum = {
21+
None: 'None',
22+
Succeeded: 'Succeeded',
23+
PartiallySucceeded: 'PartiallySucceeded',
24+
Failed: 'Failed',
25+
Canceled: 'Canceled'
26+
};
27+
1228
async function main() {
1329
const disabledPipelines: string[] = [];
1430
const runningTestBuilds: Promise<BuildResult>[] = [];
@@ -23,18 +39,20 @@ async function main() {
2339
}
2440
}
2541

26-
let failed = false;
42+
let failed: boolean = false;
2743

28-
Promise.all(runningTestBuilds).then(results => {
44+
Promise.all(runningTestBuilds).then(buildResults => {
2945
console.log('\nResults:');
3046

31-
results.map(result => {
32-
if (!result.succeeded) {
33-
result.message = `##vso[task.issue type=error]${result.message}`;
47+
buildResults.map(buildResult => {
48+
if (buildResult.result === buildResultEnum.PartiallySucceeded) {
49+
buildResult.message = `##vso[task.issue type=warning]${buildResult.message}`;
50+
} else if (buildResult.result !== buildResultEnum.Succeeded) {
51+
buildResult.message = `##vso[task.issue type=error]${buildResult.message}`;
3452
failed = true;
3553
}
3654

37-
console.log(result.message);
55+
console.log(buildResult.message);
3856
});
3957
}).catch(error => {
4058
console.error(error);
@@ -68,10 +86,10 @@ async function runTaskPipelines(taskName: string): Promise<Promise<BuildResult>[
6886

6987
const runningBuilds: Promise<BuildResult>[] = [];
7088
for (const config of configs) {
71-
console.log(`Running tests for "${taskName}" task with config "${config}" for pipeline "${pipeline.name}"`)
89+
console.log(`Running tests for "${taskName}" task with config "${config}" for pipeline "${pipeline.name}"`);
7290
const pipelineBuild = await startTestPipeline(pipeline, config);
7391

74-
const buildPromise = new Promise<BuildResult>(resolve => completeBuild(taskName, pipelineBuild, resolve))
92+
const buildPromise = new Promise<BuildResult>(resolve => completeBuild(taskName, pipelineBuild, resolve));
7593
runningBuilds.push(buildPromise);
7694
}
7795

@@ -132,26 +150,28 @@ async function completeBuild(
132150
if (++intervalAmount * intervalInSeconds >= buildTimeoutInSeconds) {
133151
clearInterval(interval);
134152

135-
resolve({ succeeded: false, message: `Timeout to complete the ${stringifiedBuild} exceeded` });
153+
resolve({ result: 'Timeout', message: `Timeout to complete the ${stringifiedBuild} exceeded` });
136154
}
137155

138156
return;
139157
}
140158

141-
if (buildStatus.result === 2) { // succeeded
142-
clearInterval(interval);
159+
const result = buildResultCode[buildStatus.result!];
143160

144-
resolve({ succeeded: true, message: `The ${stringifiedBuild} completed with result "${buildStatus.result}"` });
145-
} else if (retryCount < maxRetries) {
161+
if (
162+
result !== buildResultEnum.Succeeded &&
163+
result !== buildResultEnum.PartiallySucceeded &&
164+
retryCount < maxRetries
165+
) {
146166
console.log(`Retrying failed jobs in ${stringifiedBuild}. Retry count: ${++retryCount} out of ${maxRetries}`);
147167
await retryFailedJobsInBuild(pipelineBuild);
148-
}
149-
else {
168+
} else {
150169
clearInterval(interval);
151170

152-
resolve({ succeeded: false, message: `The ${stringifiedBuild} completed with result "${buildStatus.result}"` });
171+
resolve({ result, message: `The ${stringifiedBuild} completed with result "${result}"` });
153172
}
154173
},
174+
155175
intervalInSeconds * 1000
156176
);
157177
}

0 commit comments

Comments
 (0)