@@ -355,24 +355,29 @@ function extractChangelogContent(version: string): string {
355355 return match [ 1 ] . trim ( ) ;
356356}
357357
358- function updateAndPublishRelease ( version : string ) : void {
359- logStarted ( "Updating draft release..." ) ;
360-
358+ async function updateAndPublishRelease ( version : string ) : Promise < void > {
361359 const changelogContent = extractChangelogContent ( version ) ;
362360
363- // Get the draft release
364- const releases = exec ( `gh release list --json tagName,isDraft,name -L 10` , { silent : true } ) ;
365- const releaseList = JSON . parse ( releases ) as Array < {
366- tagName : string ;
367- isDraft : boolean ;
368- name : string ;
369- } > ;
361+ logStarted ( "Waiting for draft release to appear..." ) ;
362+ const timeoutMinutes = 5 ;
370363
371- const draftRelease = releaseList . find ( ( r ) => r . isDraft && r . tagName === version ) ;
364+ await pollUntil (
365+ ( ) => {
366+ const releases = exec ( `gh release list --json tagName,isDraft,name -L 10` , { silent : true } ) ;
367+ const releaseList = JSON . parse ( releases ) as Array < {
368+ tagName : string ;
369+ isDraft : boolean ;
370+ name : string ;
371+ } > ;
372372
373- if ( ! draftRelease ) {
374- error ( `Could not find draft release for tag ${ version } . Please check GitHub releases.` ) ;
375- }
373+ const draftRelease = releaseList . find ( ( r ) => r . isDraft && r . tagName === version ) ;
374+ return draftRelease !== undefined ;
375+ } ,
376+ {
377+ timeoutMs : timeoutMinutes * 60 * MS_PER_SECOND ,
378+ intervalMs : POLL_INTERVAL_MS ,
379+ } ,
380+ ) ;
376381
377382 logCompleted ( "Draft release found" ) ;
378383
@@ -411,7 +416,7 @@ async function main(): Promise<void> {
411416 pullLatestMaster ( ) ;
412417 createAndPushTag ( version ) ;
413418 await waitForReleaseBuild ( version ) ;
414- updateAndPublishRelease ( version ) ;
419+ await updateAndPublishRelease ( version ) ;
415420
416421 logCompleted ( `Release process for version ${ version } completed successfully!` ) ;
417422}
0 commit comments