flipbook-labs/Changewrite Release

Create release PRs, draft/publish GitHub releases, and expose release state for downstream jobs.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jul 9, 2026
License
MIT

Pinned Snippet

workflow.ymlSHA-pinned
uses: flipbook-labs/changewrite@1e03db476eedf0ec6ded7bbf4fcfab38cee69819 # v0.7.0

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
github-tokenToken used for GitHub API calls (release creation, publishing). Defaults to the built-in GITHUB_TOKEN.no${{ github.token }}
pr-tokenToken used to create the publish PR. Pass a GitHub App installation token or a PAT if the resulting PR should trigger workflow runs; PRs created with GITHUB_TOKEN do not trigger other workflows.no""
publish-immediatelyPublish the drafted GitHub release immediately. Set false when downstream jobs attach artifacts first.notrue
force-publishTag and draft the configured version even if it already has a tag.nofalse
force-versionOpen a publish PR that sets this exact version (e.g. 1.2.3), regardless of release state. Use it to forget the version currently being published and release this one instead, for example to step past a tag that can never be published or to redo a release at a different version. The run skips drafting and publishing when set.no""
baseBase branch for the generated publish PR.nomain
branchBranch name for the generated publish PR.nopublish-next-version
pr-titleTitle for the generated publish PR.noPublish v{{version}}
pr-bodyBody for the generated publish PR.no>[!IMPORTANT] > This PR prepares the next release by bumping the version and updating the changelog. > > **Merging this PR will:** > > 1. Create tag `{{tag}}` via the GitHub API > 2. Create a GitHub release for that tag > 3. Publish the release after any configured follow-up jobs finish <details> <summary><b>GitHub Release preview</b></summary> # {{tag}} **github-actions** released this 0 seconds ago 🔒 Immutable 🏷️ {{tag}} 🔗 SHA {{notes}} </details> Next release will be available here: {{repo_url}}/releases/tag/{{tag}} 🤖 This PR was generated by [this run]({{run_url}}).
prepare-onlyPrepare the publish PR without drafting or publishing a release.nofalse
require-entryRequire the current branch to add its own changelog entry before merging. Needs a full-history checkout (actions/checkout with fetch-depth: 0) so the check can compare against the base branch. When enabled, the action runs only this check and skips the release flow.nofalse
post-draft-hookBash run after the draft release is created, before it is published. Use it to attach build artifacts so they ship with the release without a separate job. Receives CHANGEWRITE_VERSION, CHANGEWRITE_TAG, CHANGEWRITE_BIN, and GH_TOKEN in the environment. Security: this value is spliced into a shell script, so it must be a static literal. Never interpolate untrusted GitHub Actions expressions (e.g. event titles, branch names) into it; read such values from the environment inside the hook instead.no""
post-publish-hookBash run after the GitHub release is published. Use it to announce the release, push to a registry, or trigger downstream work. Receives CHANGEWRITE_VERSION, CHANGEWRITE_TAG, CHANGEWRITE_BIN, and GH_TOKEN in the environment. Security: this value is spliced into a shell script, so it must be a static literal. Never interpolate untrusted GitHub Actions expressions (e.g. event titles, branch names) into it; read such values from the environment inside the hook instead.no""
namedescription
should_publishWhether this run drafted a release for the configured version.
has_changesWhether there are pending unreleased changes to assemble into the next release.
versionThe release version acted on by this run.
tagThe release tag for the version output.
draft_createdWhether a draft release was created or confirmed.
release_createdWhether a GitHub release was published.