@@ -111,7 +111,8 @@ export class GitHubTarget extends BaseTarget {
111
111
public async createDraftRelease (
112
112
version : string ,
113
113
revision : string ,
114
- changes ?: Changeset
114
+ changes ?: Changeset ,
115
+ isLatest = true
115
116
) : Promise < GitHubRelease > {
116
117
const tag = versionToTag ( version , this . githubConfig . tagPrefix ) ;
117
118
this . logger . info ( `Git tag: "${ tag } "` ) ;
@@ -127,26 +128,6 @@ export class GitHubTarget extends BaseTarget {
127
128
} ;
128
129
}
129
130
130
- let latestRelease : { tag_name : string } | undefined ;
131
- try {
132
- latestRelease = (
133
- await this . github . repos . getLatestRelease ( {
134
- owner : this . githubConfig . owner ,
135
- repo : this . githubConfig . repo ,
136
- } )
137
- ) . data ;
138
- } catch ( error ) {
139
- // if the error is a 404 error, it means that no release exists yet
140
- // all other errors should be rethrown
141
- if ( error . status !== 404 ) {
142
- throw error ;
143
- }
144
- }
145
-
146
- const isLatest = isPreview
147
- ? false
148
- : isLatestRelease ( latestRelease , version ) ;
149
-
150
131
const { data } = await this . github . repos . createRelease ( {
151
132
draft : true ,
152
133
name : tag ,
@@ -347,7 +328,7 @@ export class GitHubTarget extends BaseTarget {
347
328
*
348
329
* @param release Release object
349
330
*/
350
- public async publishRelease ( release : GitHubRelease ) {
331
+ public async publishRelease ( release : GitHubRelease , isLatest = true ) {
351
332
if ( isDryRun ( ) ) {
352
333
this . logger . info ( `[dry-run] Not publishing the draft release` ) ;
353
334
return ;
@@ -356,6 +337,7 @@ export class GitHubTarget extends BaseTarget {
356
337
await this . github . repos . updateRelease ( {
357
338
...this . githubConfig ,
358
339
release_id : release . id ,
340
+ make_latest : isLatest ? 'true' : 'false' ,
359
341
draft : false ,
360
342
} ) ;
361
343
}
@@ -418,10 +400,40 @@ export class GitHubTarget extends BaseTarget {
418
400
} ) )
419
401
) ;
420
402
403
+ let latestRelease : { tag_name : string } | undefined = undefined ;
404
+ try {
405
+ latestRelease = (
406
+ await this . github . repos . getLatestRelease ( {
407
+ owner : this . githubConfig . owner ,
408
+ repo : this . githubConfig . repo ,
409
+ } )
410
+ ) . data ;
411
+ } catch ( error ) {
412
+ // if the error is a 404 error, it means that no release exists yet
413
+ // all other errors should be rethrown
414
+ if ( error . status !== 404 ) {
415
+ throw error ;
416
+ }
417
+ }
418
+
419
+ const latestReleaseTag = latestRelease ?. tag_name ;
420
+ this . logger . info (
421
+ latestReleaseTag
422
+ ? `Previous release: ${ latestReleaseTag } `
423
+ : 'No previous release found'
424
+ ) ;
425
+
426
+ const isPreview =
427
+ this . githubConfig . previewReleases && isPreviewRelease ( version ) ;
428
+ const isLatest = isPreview
429
+ ? false
430
+ : isLatestRelease ( latestRelease , version ) ;
431
+
421
432
const draftRelease = await this . createDraftRelease (
422
433
version ,
423
434
revision ,
424
- changelog
435
+ changelog ,
436
+ isLatest
425
437
) ;
426
438
427
439
await Promise . all (
@@ -430,7 +442,7 @@ export class GitHubTarget extends BaseTarget {
430
442
)
431
443
) ;
432
444
433
- await this . publishRelease ( draftRelease ) ;
445
+ await this . publishRelease ( draftRelease , isLatest ) ;
434
446
}
435
447
}
436
448
0 commit comments