* Creates a Github release for the specified version. The release is created * by tagging the version bump commit, and by creating the release entry. * * Expects the version bump commit and changelog to be available in the * upstream remote. * * @param releaseNotes The release note
(
releaseNotes: ReleaseNotes,
versionBumpCommitSha: string,
isPrerelease: boolean,
showAsLatestOnGitHub: boolean,
)
| 655 | * the "latest" version of the project. I.e. GitHub will show this version as "latest". |
| 656 | */ |
| 657 | private async _createGithubReleaseForVersion( |
| 658 | releaseNotes: ReleaseNotes, |
| 659 | versionBumpCommitSha: string, |
| 660 | isPrerelease: boolean, |
| 661 | showAsLatestOnGitHub: boolean, |
| 662 | ) { |
| 663 | const tagName = getReleaseTagForVersion(releaseNotes.version); |
| 664 | await this.git.github.git.createRef({ |
| 665 | ...this.git.remoteParams, |
| 666 | ref: `refs/tags/${tagName}`, |
| 667 | sha: versionBumpCommitSha, |
| 668 | }); |
| 669 | Log.info(green(` ✓ Tagged v${releaseNotes.version} release upstream.`)); |
| 670 | |
| 671 | let releaseBody = await releaseNotes.getGithubReleaseEntry(); |
| 672 | |
| 673 | // If the release body exceeds the Github body limit, we just provide |
| 674 | // a link to the changelog entry in the Github release entry. |
| 675 | if (releaseBody.length > githubReleaseBodyLimit) { |
| 676 | const releaseNotesUrl = await this._getGithubChangelogUrlForRef(releaseNotes, tagName); |
| 677 | releaseBody = |
| 678 | `Release notes are too large to be captured here. ` + |
| 679 | `[View all changes here](${releaseNotesUrl}).`; |
| 680 | } |
| 681 | |
| 682 | await this.git.github.repos.createRelease({ |
| 683 | ...this.git.remoteParams, |
| 684 | name: releaseNotes.version.toString(), |
| 685 | tag_name: tagName, |
| 686 | prerelease: isPrerelease, |
| 687 | make_latest: showAsLatestOnGitHub ? 'true' : 'false', |
| 688 | body: releaseBody, |
| 689 | }); |
| 690 | Log.info(green(` ✓ Created v${releaseNotes.version} release in Github.`)); |
| 691 | } |
| 692 | |
| 693 | /** Gets a Github URL that resolves to the release notes in the given ref. */ |
| 694 | private async _getGithubChangelogUrlForRef(releaseNotes: ReleaseNotes, ref: string) { |
nothing calls this directly
no test coverage detected