sillsdev / sillsdev/SIL.BuildTasks

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

Open
#87 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
5
Forks
3
Avg merge
1d 3h
Merged PRs (30d)
12

Description

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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with .github/workflows/CI-CD.yml and the SIL.ReleaseTasks.Dogfood references in SIL.BuildTasks.csproj and SIL.BuildTasks.AWS.csproj; inspect StampChangelogFileWithVersion and SetReleaseNotesProperty. First resolve whether the work covers workflow integration, a new compare-link task, or both. Done should include an agreed release flow that stamps CHANGELOG.md, creates a GitHub Release from tag notes, attaches built packages, and maintains the specified compare links.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, github-actions
Domain
build-system, ci-cd, release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.