@@ -86,13 +86,11 @@ async function circleCIcall (targetBranch, job, options) {
8686 return
8787 }
8888 console . log ( `CircleCI release build workflow running at https://circleci.com/workflow-run/${ workflowId } for ${ job } .` )
89- const jobInfoUrl = `https://circleci.com/api/v2/workflow/${ workflowId } /jobs`
90- const jobInfo = await circleCIRequest ( jobInfoUrl , 'GET' )
91- if ( ! jobInfo . items || jobInfo . items . length !== 1 ) {
92- console . log ( 'Error retrieving job for workflow, response was:' , jobInfo )
89+ const jobNumber = await getCircleCIJobNumber ( workflowId )
90+ if ( jobNumber === - 1 ) {
9391 return
9492 }
95- const jobUrl = `https://circleci.com/gh/electron/electron/${ jobInfo . items [ 0 ] . job_number } `
93+ const jobUrl = `https://circleci.com/gh/electron/electron/${ jobNumber } `
9694 console . log ( `CircleCI release build request for ${ job } successful. Check ${ jobUrl } for status.` )
9795 } catch ( err ) {
9896 console . log ( 'Error calling CircleCI: ' , err )
@@ -121,6 +119,37 @@ async function getCircleCIWorkflowId (pipelineId) {
121119 return - 1
122120}
123121
122+ async function getCircleCIJobNumber ( workflowId ) {
123+ const jobInfoUrl = `https://circleci.com/api/v2/workflow/${ workflowId } /jobs`
124+ for ( let i = 0 ; i < 5 ; i ++ ) {
125+ const jobInfo = await circleCIRequest ( jobInfoUrl , 'GET' )
126+ if ( ! jobInfo . items ) {
127+ continue
128+ }
129+ if ( jobInfo . items . length !== 1 ) {
130+ console . log ( 'Unxpected number of jobs, response was:' , jobInfo )
131+ return - 1
132+ }
133+
134+ switch ( jobInfo . items [ 0 ] . status ) {
135+ case 'not_running' :
136+ case 'queued' :
137+ case 'running' : {
138+ if ( jobInfo . items [ 0 ] . job_number && ! isNaN ( jobInfo . items [ 0 ] . job_number ) ) {
139+ return jobInfo . items [ 0 ] . job_number
140+ }
141+ break
142+ }
143+ case 'error' : {
144+ console . log ( 'Error retrieving jobs, response was:' , jobInfo )
145+ return - 1
146+ }
147+ }
148+ await new Promise ( resolve => setTimeout ( resolve , 5000 ) )
149+ }
150+ return - 1
151+ }
152+
124153async function circleCIRequest ( url , method , requestBody ) {
125154 return makeRequest ( {
126155 auth : {
0 commit comments