Skip to content

Add automated release workflow with changelog integration#879

Merged
DannyvdSluijs merged 7 commits intomainfrom
copilot/add-github-workflow-release
Feb 13, 2026
Merged

Add automated release workflow with changelog integration#879
DannyvdSluijs merged 7 commits intomainfrom
copilot/add-github-workflow-release

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Feb 7, 2026

Plan for GitHub Release Workflow

  • Create a script bin/prepare-release.sh to update CHANGELOG.md with version and date
    • Move items from [Unreleased] to a new version section
    • Add the release date in format YYYY-MM-DD
    • Keep the unreleased section empty for future changes
    • Add proper validation for empty unreleased sections
    • Fix handling of changelogs with no released versions yet
    • Add version format validation to script
  • Create a script bin/extract-release-notes.sh to extract release notes for a version
  • Update .gitignore to include new scripts
  • Create GitHub workflow .github/workflows/release.yml
    • Triggered manually with workflow_dispatch
    • Takes version as input parameter
    • Runs the changelog update script (with built-in validation)
    • Creates and pushes a git tag
    • Creates a GitHub release with changelog as release notes
    • Extracts release notes from the updated changelog section
    • Add error handling for duplicate tags
    • Add validation for changelog changes
    • Add usage documentation for maintainers
    • Move version validation to bash script
  • Validate the workflow configuration and address code review feedback
  • Run security check with CodeQL
  • Ensure all scripts have proper executable permissions

Recent Changes

Addressed PR feedback:

  1. Fixed prepare-release.sh to handle changelogs with no released versions (added END block in awk)
  2. Moved version format validation from workflow to prepare-release.sh script for better encapsulation

Summary

This PR implements a complete GitHub workflow for creating releases. The workflow is manually triggered and automates the entire release process:

  1. Scripts Created:

    • bin/prepare-release.sh: Moves unreleased changelog entries to a new version section with the current date, validates version format
    • bin/extract-release-notes.sh: Extracts release notes for a specific version from the changelog
  2. Workflow Features:

    • Manual trigger via GitHub Actions UI (workflow_dispatch)
    • Version validation in script (semantic versioning format X.Y.Z)
    • Automated changelog update with proper date formatting
    • Git tag creation and push (format: vX.Y.Z)
    • GitHub release creation with changelog-based release notes
    • Comprehensive error handling (duplicate tags, empty releases, missing changes, etc.)
    • Works with changelogs that have no released versions yet
  3. Usage:
    Maintainers can create a release by:

    • Going to Actions → Create Release → Run workflow
    • Entering the version number (e.g., 6.7.0)
    • The workflow will handle all the rest automatically

Security Summary

No security vulnerabilities were found by CodeQL analysis.


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 4 commits February 7, 2026 18:21
Co-authored-by: DannyvdSluijs <618940+DannyvdSluijs@users.noreply.github.com>
Co-authored-by: DannyvdSluijs <618940+DannyvdSluijs@users.noreply.github.com>
Co-authored-by: DannyvdSluijs <618940+DannyvdSluijs@users.noreply.github.com>
Copilot AI changed the title [WIP] Add GitHub workflow for creating a new release Add automated release workflow with changelog integration Feb 7, 2026
Copilot AI requested a review from DannyvdSluijs February 7, 2026 18:26
Copy link
Copy Markdown
Collaborator

@DannyvdSluijs DannyvdSluijs Feb 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot This script fails to work with the current changelog. Probably due to the fact the changelog.md has no released version yet.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in commit 7425cc9. Added an END block to the awk script to handle changelogs with no released versions yet.


- name: "Validate version format"
run: |
VERSION="${{ inputs.version }}"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cant we move the version check into the resp. bash scripts?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in commit 7425cc9. Moved version validation into prepare-release.sh and removed the duplicate validation step from the workflow.

…ation to script

Co-authored-by: DannyvdSluijs <618940+DannyvdSluijs@users.noreply.github.com>
@DannyvdSluijs DannyvdSluijs marked this pull request as ready for review February 13, 2026 14:47
@DannyvdSluijs DannyvdSluijs merged commit 6d3f21a into main Feb 13, 2026
18 of 19 checks passed
@DannyvdSluijs DannyvdSluijs deleted the copilot/add-github-workflow-release branch February 13, 2026 14:47
github-actions bot added a commit that referenced this pull request Feb 13, 2026
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.

2 participants