diff --git a/.changeset/gihub-release-draft.md b/.changeset/gihub-release-draft.md new file mode 100644 index 00000000..47b2fb5d --- /dev/null +++ b/.changeset/gihub-release-draft.md @@ -0,0 +1,5 @@ +--- +"@changesets/action": patch +--- + +Add GitHub Release Draft support diff --git a/action.yml b/action.yml index e19c373c..59200a11 100644 --- a/action.yml +++ b/action.yml @@ -34,6 +34,10 @@ inputs: description: "Whether to create Github releases after publish" required: false default: true + github-releases-draft: + description: "Controls draft Release behavior." + required: false + default: false push-git-tags: description: > Whether to create git tags after publish. If `create-github-releases` is set to `true`, diff --git a/src/index.ts b/src/index.ts index 14420bf9..1e52c2b1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -74,6 +74,7 @@ import { const createGithubReleases = core.getBooleanInput( "create-github-releases", ); + const githubReleasesDraft = core.getBooleanInput("github-releases-draft"); const pushGitTags = core.getBooleanInput("push-git-tags"); if (createGithubReleases && !pushGitTags) { throw new Error( @@ -86,6 +87,7 @@ import { script: publishScript, github, createGithubReleases, + githubReleasesDraft, pushGitTags, cwd, }); diff --git a/src/run.ts b/src/run.ts index 37dd2806..d7de4dac 100644 --- a/src/run.ts +++ b/src/run.ts @@ -33,7 +33,7 @@ const MAX_CHARACTERS_PER_MESSAGE = 60000; const createRelease = async ( octokit: Octokit, - { pkg, tagName }: { pkg: Package; tagName: string }, + { pkg, tagName, draft }: { pkg: Package; tagName: string; draft: boolean }, ) => { let changelog; try { @@ -59,6 +59,7 @@ const createRelease = async ( tag_name: tagName, body: changelogEntry.content, prerelease: pkg.packageJson.version.includes("-"), + draft, ...context.repo, }); }; @@ -67,6 +68,7 @@ type PublishOptions = { script?: string; fromPackDir?: string; createGithubReleases: boolean; + githubReleasesDraft: boolean; pushGitTags: boolean; github: GitHub; cwd: string; @@ -160,6 +162,7 @@ export async function runPublish({ fromPackDir, github, createGithubReleases, + githubReleasesDraft, pushGitTags, cwd, }: PublishOptions): Promise { @@ -239,7 +242,11 @@ export async function runPublish({ await github.pushTag(tag); } if (createGithubReleases) { - await createRelease(octokit, { pkg, tagName: tag }); + await createRelease(octokit, { + pkg, + tagName: tag, + draft: githubReleasesDraft, + }); } }), );