Skip to content

feat: add dry run support for release process#493

Merged
Mossaka merged 5 commits into
mainfrom
copilot/add-dry-run-release-support
Nov 2, 2025
Merged

feat: add dry run support for release process#493
Mossaka merged 5 commits into
mainfrom
copilot/add-dry-run-release-support

Conversation

Copilot AI commented Nov 2, 2025

Copy link
Copy Markdown
Contributor

Implementation Complete: Dry Run Support for Release Process

Successfully implemented dry run support for the Wassette release process. Tags with hyphen suffixes (e.g., v0.3.4-test1) are treated as prereleases and skip CHANGELOG/manifest updates.

✅ All Tasks Completed:

  • Detect prerelease tags in release.yml workflow
  • Update release job to mark prereleases appropriately
  • Update update-changelog job condition to skip prereleases
  • Update update-package-manifests to skip prereleases
  • Update RELEASE.md documentation with dry run instructions
  • Update CHANGELOG.md with new feature
  • Test prerelease detection logic
  • Verify all tests pass
  • Address review feedback: simplify documentation and move CHANGELOG entry

Changes Summary:

.github/workflows/release.yml (16 additions, 3 deletions):

  • Added prerelease detection logic in version extraction step
  • Set prerelease: true for tags containing hyphen
  • Added condition to skip update-changelog job for prerelease tags

.github/workflows/update-package-manifests.yml (2 additions):

  • Added condition to skip job for prerelease releases

RELEASE.md (simplified documentation):

  • Added "Dry Run / Test Releases" section
  • Simplified explanation: concisely states it skips CHANGELOG and manifest updates
  • Provided examples and cleanup instructions

CHANGELOG.md (moved to Changed section):

  • Moved entry from "Added" to "Changed" section as change fragment
  • Documents the new dry run feature

How It Works:

For regular releases (e.g., v0.4.0):

  • ✅ Builds binaries for all platforms
  • ✅ Creates GitHub release as stable
  • ✅ Updates CHANGELOG with version and date
  • ✅ Updates package manifests (Homebrew, WinGet)

For dry run releases (e.g., v0.3.4-test1):

  • ✅ Builds binaries for all platforms
  • ✅ Creates GitHub release marked as "Pre-release"
  • ❌ Skips CHANGELOG update
  • ❌ Skips package manifest updates

Tag Detection Logic:

if [[ "$VERSION" == *-* ]]; then
  is_prerelease=true  # Skip CHANGELOG/manifests
else
  is_prerelease=false  # Full release process
fi

Supported Prerelease Patterns:

  • Test releases: v0.3.4-test1, v0.3.4-test2
  • Release candidates: v0.4.0-rc1, v0.4.0-rc2
  • Alpha/Beta: v0.4.0-alpha, v0.4.0-beta
  • Hotfix tests: v0.3.4-hotfix-test

Testing & Validation:

  1. ✅ Prerelease detection logic tested with 11 tag formats
  2. ✅ All existing changelog_utils.py tests pass (11/11)
  3. ✅ YAML syntax validated for both workflow files
  4. ✅ Code compiles successfully with cargo check
  5. ✅ No breaking changes to existing functionality

Usage Example:

# Create and push prerelease tag
git tag -s v0.3.4-test1 -m "Test release v0.3.4-test1"
git push origin v0.3.4-test1

# Result: Binaries published, no CHANGELOG/manifest updates

Benefits:

  • Safe Testing: Test release pipeline without affecting production
  • Release Candidates: Create RC versions for validation
  • No Manual Cleanup: CHANGELOG/manifests don't need reverting
  • Clear Separation: Prereleases visibly marked on GitHub
  • Backward Compatible: Regular releases unchanged
Original prompt

the release process should support a dry run (such as releasing v0.3.4-test1) and this process can push the built binary to github release page, but do not update changelog or trigger update-package-manifests


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 2 commits November 2, 2025 17:54
- Detect prerelease tags (containing hyphen) in release.yml
- Mark GitHub releases as prerelease for dry run tags
- Skip CHANGELOG update for prerelease tags
- Skip package manifest updates for prerelease releases
- Add comprehensive documentation for dry run releases in RELEASE.md

Co-authored-by: Mossaka <5447827+Mossaka@users.noreply.github.com>
Co-authored-by: Mossaka <5447827+Mossaka@users.noreply.github.com>
Copilot AI changed the title [WIP] Add dry run support for release process feat: add dry run support for release process Nov 2, 2025
Copilot AI requested a review from Mossaka November 2, 2025 18:00

@Mossaka Mossaka left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@copilot please fix the comment, also delete the section on what happens during a dry run and concisely just say it will skip changelog update and skip package manifest updates

Comment thread CHANGELOG.md Outdated

### Added

- Dry run / test release support in the release workflow: Tags with hyphen suffixes (e.g., `v0.3.4-test1`, `v0.4.0-rc1`) are now treated as prereleases. These releases build and publish binaries to GitHub but skip CHANGELOG updates and package manifest updates, enabling safe testing of the release pipeline without affecting production releases

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

change this to a change fragment

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.

Moved to Changed section in commit 1d40148.

…ged section

Co-authored-by: Mossaka <5447827+Mossaka@users.noreply.github.com>

Copilot AI commented Nov 2, 2025

Copy link
Copy Markdown
Contributor Author

@copilot please fix the comment, also delete the section on what happens during a dry run and concisely just say it will skip changelog update and skip package manifest updates

Fixed in commit 1d40148. Deleted the "What Happens During a Dry Run" section and replaced it with a single concise sentence stating it skips CHANGELOG updates and package manifest updates.

Copilot AI requested a review from Mossaka November 2, 2025 18:20
@Mossaka Mossaka marked this pull request as ready for review November 2, 2025 18:32
Release workflow now supports dry run/test releases for safer testing without affecting production. Updated CLI help text and dependencies, and refactored duplicated tool name constants.

Signed-off-by: Jiaxiao Zhou <duibao55328@gmail.com>
@Mossaka Mossaka merged commit 3f94d4a into main Nov 2, 2025
15 checks passed
@Mossaka Mossaka deleted the copilot/add-dry-run-release-support branch November 2, 2025 18:51
Mossaka added a commit to Mossaka/wassette that referenced this pull request Feb 2, 2026
* Initial plan

* feat: add dry run support for release process

- Detect prerelease tags (containing hyphen) in release.yml
- Mark GitHub releases as prerelease for dry run tags
- Skip CHANGELOG update for prerelease tags
- Skip package manifest updates for prerelease releases
- Add comprehensive documentation for dry run releases in RELEASE.md

Co-authored-by: Mossaka <5447827+Mossaka@users.noreply.github.com>

* docs: update CHANGELOG with dry run release feature

Co-authored-by: Mossaka <5447827+Mossaka@users.noreply.github.com>

* docs: simplify dry run documentation and move CHANGELOG entry to Changed section

Co-authored-by: Mossaka <5447827+Mossaka@users.noreply.github.com>

* Update CHANGELOG with recent changes and improvements

Release workflow now supports dry run/test releases for safer testing without affecting production. Updated CLI help text and dependencies, and refactored duplicated tool name constants.

Signed-off-by: Jiaxiao Zhou <duibao55328@gmail.com>

---------

Signed-off-by: Jiaxiao Zhou <duibao55328@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Mossaka <5447827+Mossaka@users.noreply.github.com>
Co-authored-by: Jiaxiao Zhou <duibao55328@gmail.com>
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