feat: Ensure generated release notes cannot be over 125000 characters (#684)

* Ensure generated release notes cannot be over 125000 characters

* simpler truncate, and always truncate even without generated
This commit is contained in:
Jens L.
2025-11-08 20:20:00 +01:00
committed by GitHub
parent 237aaccf71
commit af658b4d5d
2 changed files with 43 additions and 5 deletions

2
dist/index.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -75,7 +75,27 @@ export class GitHubReleaser implements Releaser {
return this.github.rest.repos.getReleaseByTag(params);
}
createRelease(params: {
async getReleaseNotes(params: {
owner: string;
repo: string;
tag_name: string;
target_commitish: string | undefined;
}): Promise<{
data: {
name: string;
body: string;
};
}> {
return await this.github.rest.repos.generateReleaseNotes(params);
}
truncateReleaseNotes(input: string): string {
// release notes can be a maximum of 125000 characters
const githubNotesMaxCharLength = 125000;
return input.substring(0, githubNotesMaxCharLength - 1);
}
async createRelease(params: {
owner: string;
repo: string;
tag_name: string;
@@ -94,11 +114,20 @@ export class GitHubReleaser implements Releaser {
) {
params.make_latest = undefined;
}
if (params.generate_release_notes) {
const releaseNotes = await this.getReleaseNotes(params);
params.generate_release_notes = false;
if (params.body) {
params.body = `${params.body}\n\n${releaseNotes.data.body}`;
} else {
params.body = releaseNotes.data.body;
}
}
params.body = params.body ? this.truncateReleaseNotes(params.body) : undefined;
return this.github.rest.repos.createRelease(params);
}
updateRelease(params: {
async updateRelease(params: {
owner: string;
repo: string;
release_id: number;
@@ -118,7 +147,16 @@ export class GitHubReleaser implements Releaser {
) {
params.make_latest = undefined;
}
if (params.generate_release_notes) {
const releaseNotes = await this.getReleaseNotes(params);
params.generate_release_notes = false;
if (params.body) {
params.body = `${params.body}\n\n${releaseNotes.data.body}`;
} else {
params.body = releaseNotes.data.body;
}
}
params.body = params.body ? this.truncateReleaseNotes(params.body) : undefined;
return this.github.rest.repos.updateRelease(params);
}