Skip to content

Replace git-release Docker action with gh release + getChangelog - #10

Merged
tajobe merged 1 commit into
mainfrom
feature/gh-release-replacement
Jul 22, 2026
Merged

Replace git-release Docker action with gh release + getChangelog#10
tajobe merged 1 commit into
mainfrom
feature/gh-release-replacement

Conversation

@tajobe

@tajobe tajobe commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • antonyurchenko/git-release hasn't been updated since Jan 2024 and runs its own independent Keep a Changelog parser, separate from the one already configured via org.jetbrains.changelog for patching — two different parsers for the same file risked them disagreeing on what counts as a valid section.
  • Replaced it with plain gh release create/gh release delete (already available on runners, no Docker pull needed), fed by the changelog plugin's own getChangelog task:
    • Tag-triggered runs: getChangelog --project-version=X extracts that version's notes, gh release create publishes the tagged release.
    • Branch-triggered runs: getChangelog --unreleased extracts the current Unreleased content, and the latest-snapshot pre-release is deleted and recreated pointing at the new commit — the same "update in place" behavior git-release provided via its PRE_RELEASE/UNRELEASED env vars.

Test plan

  • ./gradlew clean build passes
  • Verified getChangelog --no-header --output-file locally for both the --project-version=X and --unreleased cases against the real changelog: clean section content, no header line, no reference-link footer — ready to use directly as release notes via --notes-file
  • gh release create/gh release delete flag usage (--cleanup-tag, --target, --prerelease, --notes-file, --title) confirmed against gh release create --help/gh release delete --help
  • YAML syntax validated

Since publish-workflow.yml only triggers on pushes (not PRs), the gh release create/delete steps themselves can only be exercised end-to-end by an actual push to main after merging — same as the verification approach used for the earlier release-workflow fixes in this session.

antonyurchenko/git-release hasn't been updated since Jan 2024 and ran
its own independent Keep a Changelog parser, separate from the one
already configured via org.jetbrains.changelog for patching. Using two
different parsers for the same file risked them disagreeing on what
counts as a valid section.

Replaced it with plain `gh release create`/`gh release delete` (already
available on runners, no Docker pull), fed by the changelog plugin's
own `getChangelog` task:
- Tag-triggered runs: `getChangelog --project-version=X` extracts that
  version's notes, `gh release create` publishes the tagged release.
- Branch-triggered runs: `getChangelog --unreleased` extracts the
  current Unreleased content, and the `latest-snapshot` pre-release is
  deleted and recreated pointing at the new commit (same "update in
  place" behavior git-release provided via PRE_RELEASE/UNRELEASED).

Verified `getChangelog --no-header --output-file` locally for both the
--project-version and --unreleased cases against the real changelog:
clean section content, no header line, no reference-link footer -
ready to use directly as release notes.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR modernizes the release automation by removing reliance on the unmaintained antonyurchenko/git-release Docker action and instead using the GitHub CLI (gh release) with release notes generated by the already-configured org.jetbrains.changelog Gradle plugin.

Changes:

  • Generate release notes via ./gradlew getChangelog (tag builds use --project-version, branch builds use --unreleased) and feed them directly to gh release create via --notes-file.
  • Publish tagged releases using gh release create, and update the moving latest-snapshot prerelease by deleting/recreating it on branch pushes.
  • Document the workflow change in the Unreleased changelog.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
CHANGELOG.md Adds an Unreleased entry describing the migration from git-release to gh release + getChangelog.
.github/workflows/publish-workflow.yml Replaces the Docker-based release step with Gradle-extracted notes and gh release create/delete for tags and the latest-snapshot prerelease.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@tajobe
tajobe merged commit f724bc0 into main Jul 22, 2026
2 checks passed
@tajobe
tajobe deleted the feature/gh-release-replacement branch July 22, 2026 18:15
tajobe added a commit that referenced this pull request Jul 22, 2026
…log (#10)

antonyurchenko/git-release hasn't been updated since Jan 2024 and ran
its own independent Keep a Changelog parser, separate from the one
already configured via org.jetbrains.changelog for patching. Using two
different parsers for the same file risked them disagreeing on what
counts as a valid section.

Replaced it with plain `gh release create`/`gh release delete` (already
available on runners, no Docker pull), fed by the changelog plugin's
own `getChangelog` task:
- Tag-triggered runs: `getChangelog --project-version=X` extracts that
  version's notes, `gh release create` publishes the tagged release.
- Branch-triggered runs: `getChangelog --unreleased` extracts the
  current Unreleased content, and the `latest-snapshot` pre-release is
  deleted and recreated pointing at the new commit (same "update in
  place" behavior git-release provided via PRE_RELEASE/UNRELEASED).

Verified `getChangelog --no-header --output-file` locally for both the
--project-version and --unreleased cases against the real changelog:
clean section content, no header line, no reference-link footer -
ready to use directly as release notes.
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