38 lines
919 B
TypeScript
38 lines
919 B
TypeScript
type Args = {
|
|
branch: string
|
|
tag: string
|
|
releaseNotes: string
|
|
}
|
|
|
|
export const createDraftGitHubRelease = async ({
|
|
branch,
|
|
tag,
|
|
releaseNotes,
|
|
}: Args): Promise<{ releaseUrl: string }> => {
|
|
// https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#create-a-release
|
|
const res = await fetch(`https://api.github.com/repos/payloadcms/payload/releases`, {
|
|
headers: {
|
|
Accept: 'application/vnd.github.v3+json',
|
|
Authorization: `token ${process.env.GITHUB_TOKEN}`,
|
|
},
|
|
method: 'POST',
|
|
body: JSON.stringify({
|
|
tag_name: tag,
|
|
target_commitish: branch,
|
|
name: tag,
|
|
body: releaseNotes,
|
|
draft: true,
|
|
prerelease: false,
|
|
generate_release_notes: false,
|
|
}),
|
|
})
|
|
|
|
if (!res.ok) {
|
|
throw new Error(`Failed to create release: ${await res.text()}`)
|
|
}
|
|
|
|
const resBody = await res.json()
|
|
|
|
return { releaseUrl: resBody.html_url }
|
|
}
|