Skip to content

Dogfood SIL.ReleaseTasks to automate CHANGELOG stamping and release creation from pushed tags #87

Description

@tombogle

We just had a case (PR #86) where a release's CHANGELOG entries sat under ## [Unreleased] indefinitely because nobody renamed the section and updated the compare-link footer at release time.

This repo already ships tooling that covers most of what's needed to prevent that:

  • StampChangelogFileWithVersion already handles Keep-a-Changelog-aware stamping — given a literal ## [Unreleased] line, it inserts ## [x.y.z] - date right after it, leaving a fresh empty ## [Unreleased] above. It's just never invoked anywhere in this repo's own build.
  • SetReleaseNotesProperty is already dogfooded (via SIL.ReleaseTasks.Dogfood, referenced by SIL.BuildTasks.csproj / SIL.BuildTasks.AWS.csproj) to populate PackageReleaseNotes at pack time — the same extraction could feed a GitHub Release body.
  • CreateReleaseNotesHtml could render those notes as HTML if ever wanted.

None of this is wired into .github/workflows/CI-CD.yml: there's no step that stamps CHANGELOG.md and no step that creates a GitHub Release.

Suggested direction (not a committed design):

  • Use StampChangelogFileWithVersion in a maintainer-run script or workflow_dispatch job to prepare a release PR, replacing today's hand-editing (the exact step that was skipped for v3.2.0).
  • On tag push, add a CI step that extracts notes via SetReleaseNotesProperty and creates the GitHub Release with the built packages attached, since by then CHANGELOG.md should already be correctly stamped via the step above.

New task worth adding to SIL.ReleaseTasks itself: nothing today maintains the Keep-a-Changelog compare-link footer (the [Unreleased]: .../compare/vX...master line and the per-version [x.y.z]: .../compare/vPREV...vNEW lines). This isn't specific to this repo — every consumer of SIL.ReleaseTasks that follows the Keep a Changelog format has to maintain these links by hand. A new task (either folded into StampChangelogFileWithVersion or a standalone one) that, given the changelog file, the new version, and the repo URL, updates the [Unreleased] compare link and inserts the new version's compare-link line would benefit all downstream consumers of the package, not just this repo.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions