flipbook-labs/Changewrite Release
Create release PRs, draft/publish GitHub releases, and expose release state for downstream jobs.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Activelast commit Jul 9, 2026
- License
- MIT
Pinned Snippet
uses: flipbook-labs/changewrite@1e03db476eedf0ec6ded7bbf4fcfab38cee69819 # v0.7.0tags can be moved; commit SHAs can't. why a SHA?
Inputs
| name | description | required | default |
|---|---|---|---|
| github-token | Token used for GitHub API calls (release creation, publishing). Defaults to the built-in GITHUB_TOKEN. | no | ${{ github.token }} |
| pr-token | Token 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-immediately | Publish the drafted GitHub release immediately. Set false when downstream jobs attach artifacts first. | no | true |
| force-publish | Tag and draft the configured version even if it already has a tag. | no | false |
| force-version | Open 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 | "" |
| base | Base branch for the generated publish PR. | no | main |
| branch | Branch name for the generated publish PR. | no | publish-next-version |
| pr-title | Title for the generated publish PR. | no | Publish v{{version}} |
| pr-body | Body 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-only | Prepare the publish PR without drafting or publishing a release. | no | false |
| require-entry | Require 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. | no | false |
| post-draft-hook | Bash 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-hook | Bash 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 | "" |
Outputs
| name | description |
|---|---|
| should_publish | Whether this run drafted a release for the configured version. |
| has_changes | Whether there are pending unreleased changes to assemble into the next release. |
| version | The release version acted on by this run. |
| tag | The release tag for the version output. |
| draft_created | Whether a draft release was created or confirmed. |
| release_created | Whether a GitHub release was published. |