@@ -5,10 +5,26 @@ import { fetchBuildStatus, retryFailedJobsInBuild } from './helpers.Build';
55import { fetchPipelines } from './helpers.Pipeline' ;
66import { getBuildConfigs } from './helpers' ;
77
8- interface BuildResult { succeeded : boolean ; message : string }
8+ interface BuildResult { result : string ; message : string }
99
1010const 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+
1228async 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