Skip to content

chore(ci): replace unmaintained release-drafter fork with upstream v7.5.1 - #15439

Open
Maffooch wants to merge 1 commit into
devfrom
chore/retire-release-drafter-fork
Open

chore(ci): replace unmaintained release-drafter fork with upstream v7.5.1#15439
Maffooch wants to merge 1 commit into
devfrom
chore/retire-release-drafter-fork

Conversation

@Maffooch

@Maffooch Maffooch commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Shortcut: sc-14091

Summary

release_drafter_valentijn.yml pinned valentijnscholten/release-drafter@f587de96, a fork of release-drafter frozen since 2021-01-23. This repoints it at upstream release-drafter/release-drafter@v7.5.1 and expresses the fork's one feature using an upstream input.

Why the fork existed, and why it no longer needs to

The fork's only functional delta over upstream was a previous-version action input. It existed because upstream could not start a changeset from an arbitrary release, so a minor-to-minor changeset was not expressible: you could only diff back to the most recent patch.

Upstream now solves this with filter-by-range, which restricts which past releases are eligible to be picked as the previous release, evaluating each tag with node's semver.satisfies(). Verified against the real semver library using this repo's tags:

filter-by-range eligible candidates picked as changeset start
* (default, unset) all 3.1.303
>=3.1.0 <3.2.0 all 3.1.x newest 3.1.x
3.1.0 3.1.0 only 3.1.0 (minor-to-minor)

So the minor-to-minor case is now a supported upstream configuration, with the same single manual value previously typed into previous-version.

Note that upstream still has no previous-version input; both action.yml files were read at their pinned SHAs to confirm. This is a re-expression via filter-by-range, not a rename.

Secondary reason: the fork can no longer read our config correctly

The fork's lib/schema.js validates with allowUnknown: true, so the when: keys introduced in #15264 are silently dropped rather than rejected. Every category then collapses to an empty label set, so the next dispatch would have drafted an ungrouped changelog. This did not surface because #15264 merged 2026-07-17, after the workflow's last run on 2026-07-13.

Changes

  • uses: -> release-drafter/release-drafter@4d75298e (v7.5.1), hash-pinned to match the repo convention
  • previous-version input -> filter-by-range, with usage guidance in the input description
  • new dry-run input, so a range can be confirmed without writing to a release draft
  • display name updated, since "Valentijn" no longer describes it. The file name is deliberately unchanged so existing Actions run history stays associated.

Verification

  • actionlint clean on the changed workflow
  • no valentijnscholten references remain under .github/
  • unset inputs are safe: upstream's getActionInput maps core.getInput(name) || undefined, so omitting filter-by-range preserves current behaviour

Suggested first run after merge: dispatch with dry-run: true and filter-by-range set to the previous minor tag, and confirm the logged changeset starts where expected.

Related

Paired with #15440, which migrates the deprecated version-resolver block in .github/release-drafter.yml. Merge this PR first: that migration adds title-less type: version-resolver categories, which the old fork's Joi schema rejects outright ("title" is required), so merging it while the fork is still pinned would break this workflow's next dispatch.

….5.1

This workflow pinned valentijnscholten/release-drafter, a fork whose only
functional delta over upstream was a `previous-version` input. That input
existed because upstream could not start a changeset from an arbitrary
release, so a minor-to-minor changeset was not expressible.

Upstream now covers that use case with `filter-by-range`, which restricts
which past releases are eligible to be treated as the previous release by
evaluating each tag with semver.satisfies(). Passing the previous minor tag
exactly (e.g. '3.1.0') selects it as the start of the changeset, so the fork
is no longer needed:

  filter-by-range: '*'              -> 3.1.303  (most recent, previous behaviour)
  filter-by-range: '>=3.1.0 <3.2.0' -> 3.1.303 down to the newest 3.1.x
  filter-by-range: '3.1.0'          -> 3.1.0    (minor-to-minor)

The fork has also been frozen since 2021 and cannot parse the current
config's category schema beyond ignoring it: its Joi schema validates with
allowUnknown, so the `when:` keys added in #15264 are silently dropped and
every category collapses to an empty label set. Its next run would have
produced an ungrouped changelog.

A `dry-run` input is added so the range can be confirmed without writing to
a release draft. Unset inputs are safe: the action maps an empty string to
undefined, so omitting `filter-by-range` keeps the previous behaviour.

Verified with actionlint. The workflow file name is kept so the existing
Actions run history stays associated; only the display name changes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant