Skip to content

Commit 296aaa4

Browse files
committed
fix(github): Fix making github releases latest or not
Also includes #567
1 parent cf6e2d4 commit 296aaa4

File tree

1 file changed

+36
-24
lines changed

1 file changed

+36
-24
lines changed

src/targets/github.ts

+36-24
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ export class GitHubTarget extends BaseTarget {
111111
public async createDraftRelease(
112112
version: string,
113113
revision: string,
114-
changes?: Changeset
114+
changes?: Changeset,
115+
isLatest = true
115116
): Promise<GitHubRelease> {
116117
const tag = versionToTag(version, this.githubConfig.tagPrefix);
117118
this.logger.info(`Git tag: "${tag}"`);
@@ -127,26 +128,6 @@ export class GitHubTarget extends BaseTarget {
127128
};
128129
}
129130

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-
150131
const { data } = await this.github.repos.createRelease({
151132
draft: true,
152133
name: tag,
@@ -347,7 +328,7 @@ export class GitHubTarget extends BaseTarget {
347328
*
348329
* @param release Release object
349330
*/
350-
public async publishRelease(release: GitHubRelease) {
331+
public async publishRelease(release: GitHubRelease, isLatest = true) {
351332
if (isDryRun()) {
352333
this.logger.info(`[dry-run] Not publishing the draft release`);
353334
return;
@@ -356,6 +337,7 @@ export class GitHubTarget extends BaseTarget {
356337
await this.github.repos.updateRelease({
357338
...this.githubConfig,
358339
release_id: release.id,
340+
make_latest: isLatest ? 'true' : 'false',
359341
draft: false,
360342
});
361343
}
@@ -418,10 +400,40 @@ export class GitHubTarget extends BaseTarget {
418400
}))
419401
);
420402

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+
421432
const draftRelease = await this.createDraftRelease(
422433
version,
423434
revision,
424-
changelog
435+
changelog,
436+
isLatest
425437
);
426438

427439
await Promise.all(
@@ -430,7 +442,7 @@ export class GitHubTarget extends BaseTarget {
430442
)
431443
);
432444

433-
await this.publishRelease(draftRelease);
445+
await this.publishRelease(draftRelease, isLatest);
434446
}
435447
}
436448

0 commit comments

Comments
 (0)