Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions .github/actions/create-release/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,6 @@ inputs:
description: Release title. Defaults to the tag.
required: false
default: ""
notes-file:
description: >-
Markdown file prepended to GitHub's generated notes. Use it for the one
or two sentences a human wrote about this release.
required: false
default: ""
target:
description: >-
Commit to tag. Defaults to HEAD. Tag the commit that already has the
Expand Down Expand Up @@ -49,15 +43,13 @@ runs:
GH_TOKEN: ${{ inputs.token }}
TAG: ${{ inputs.tag }}
TITLE: ${{ inputs.title }}
NOTES_FILE: ${{ inputs.notes-file }}
TARGET: ${{ inputs.target }}
ARTIFACTS: ${{ inputs.artifacts }}
GENERATE_NOTES: ${{ inputs.generate-notes }}
DRY_RUN: ${{ inputs.dry-run }}
run: |
ARGS=(--tag "$TAG")
[ -n "$TITLE" ] && ARGS+=(--title "$TITLE")
[ -n "$NOTES_FILE" ] && ARGS+=(--notes-file "$NOTES_FILE")
[ -n "$TARGET" ] && ARGS+=(--target "$TARGET")
[ "$GENERATE_NOTES" = "false" ] && ARGS+=(--no-generate-notes)
[ "$DRY_RUN" = "true" ] && ARGS+=(--dry-run)
Expand Down
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,22 @@ what moved. See

## [Unreleased]

### Removed

- `create-release`'s `notes-file` input, and `--notes-file` from
`bin/create-release.sh`. Notes are written when the draft is published: the
release editor is a real text area with a preview, in front of the draft
being reviewed, and whoever passes notes in is the same person about to open
it. Passing them in also means collecting them in a `workflow_dispatch`
input, which is a single-line box showing barely a phrase.

**Released as a minor by exception.** Removing an input is a major change by
[ADR-0006](docs/decisions/0006-version-with-moving-major-tags.md). This
input shipped in 1.3.0 earlier the same day, and the only consumer of the
action is changing in lockstep to stop passing it, so no caller breaks. The
exception holds while these actions are in heavy development and have no
outside users; once they do, the rule applies as written.

## [1.3.0] - 2026-09-10

### Added
Expand Down
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,6 @@ your own deploy job, or use a `docs-*.yml` reusable workflow.
| --- | --- | --- |
| `tag` | — | Tag to create, e.g. `v1.2.3` (required) |
| `title` | the tag | Release title |
| `notes-file` | — | Markdown prepended to the generated notes |
| `target` | `HEAD` | Commit to tag |
| `artifacts` | — | Files to attach, one path per line |
| `generate-notes` | `true` | Include GitHub's commit-derived notes |
Expand All @@ -324,6 +323,10 @@ checks the artifacts, and presses the button. Nothing here publishes, and
nothing here decides a version — the caller has already bumped whatever holds
it and committed that.

**Notes are written when the draft is published.** The draft opens with
GitHub's generated commit list; whoever publishes it adds prose above that in
the release editor.

`target` matters when the release follows a metadata regeneration. Tag the
commit that has the regenerated files, not the one that only bumped the
version, or the archive ships metadata describing the previous release.
Expand Down
11 changes: 1 addition & 10 deletions bin/create-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# decides a version -- the caller has already bumped whatever holds it and
# committed that, so this tags what is in front of it.
#
# create-release.sh --tag v1.2.3 --notes-file notes.md --artifact dist/app.zip
# create-release.sh --tag v1.2.3 --artifact dist/app.zip
#
# Authentication is not handled here. The caller is expected to have gh
# authenticated already -- in CI that is GH_TOKEN, locally it is your own
Expand All @@ -17,7 +17,6 @@ set -euo pipefail

TAG=""
TITLE=""
NOTES_FILE=""
TARGET=""
DRY_RUN="false"
GENERATE_NOTES="true"
Expand All @@ -30,7 +29,6 @@ create-release.sh -- tag a commit and open a draft GitHub release
Options:
--tag NAME tag to create, e.g. v1.2.3 (required)
--title TEXT release title (default: the tag)
--notes-file FILE Markdown prepended to the generated notes
--target SHA commit to tag (default: HEAD)
--artifact PATH file to attach, repeatable
--no-generate-notes omit GitHub's commit-derived notes
Expand All @@ -43,7 +41,6 @@ while [ $# -gt 0 ]; do
case "$1" in
--tag) TAG="$2"; shift 2 ;;
--title) TITLE="$2"; shift 2 ;;
--notes-file) NOTES_FILE="$2"; shift 2 ;;
--target) TARGET="$2"; shift 2 ;;
--artifact) ARTIFACTS+=("$2"); shift 2 ;;
--no-generate-notes) GENERATE_NOTES="false"; shift ;;
Expand All @@ -59,11 +56,6 @@ command -v gh >/dev/null || { echo "create-release: gh is not installed" >&2; ex
[ -n "$TITLE" ] || TITLE="$TAG"
[ -n "$TARGET" ] || TARGET="$(git rev-parse HEAD)"

if [ -n "$NOTES_FILE" ] && [ ! -f "$NOTES_FILE" ]; then
echo "create-release: no such file: $NOTES_FILE" >&2
exit 1
fi

# An empty or missing artifact means the build silently produced nothing, which
# is the failure worth catching -- a release with no files looks fine until
# someone tries to download one.
Expand All @@ -83,7 +75,6 @@ fi

declare -a ARGS=("$TAG" --draft --title "$TITLE" --target "$TARGET")
[ "$GENERATE_NOTES" = "true" ] && ARGS+=(--generate-notes)
[ -n "$NOTES_FILE" ] && ARGS+=(--notes-file "$NOTES_FILE")
for f in ${ARTIFACTS[@]+"${ARTIFACTS[@]}"}; do ARGS+=("$f"); done

echo "tag: $TAG"
Expand Down