Skip to content

Latest commit

 

History

History
108 lines (81 loc) · 4.4 KB

File metadata and controls

108 lines (81 loc) · 4.4 KB

Release Checklist

Use this checklist when preparing a new release of doxx. You can also create a GitHub issue using the "Release" template to track progress.

Pre-Release

  • All tests passing: cargo test
  • No clippy warnings: cargo clippy
  • Code is formatted: cargo fmt --check
  • CHANGELOG.md updated:
    • Move items from [Unreleased] to new [X.Y.Z] - YYYY-MM-DD section
    • Keep [Unreleased] section empty for future changes
    • Verify changelog entries are accurate and complete
  • Version bumped in Cargo.toml
  • Test binary works: cargo run --release -- tests/fixtures/comprehensive.docx
  • Dry-run the crates.io package: cargo publish --dry-run

Create Release

  • Commit version bump: git commit -m "chore: release X.Y.Z"
  • Push to main: git push
  • Create version tag: git tag vX.Y.Z
  • Push tag: git push origin vX.Y.Z
  • Wait for GitHub Actions workflows to complete (~10-15 minutes)

Verify Automated Releases

All of the following are now automated via GitHub Actions:

  • GitHub Release created at https://github.com/bgreenwell/doxx/releases/tag/vX.Y.Z

    • All platform binaries present (Linux, macOS, Windows)
    • Tarballs (.tar.xz) and ZIP archive
    • MSI installer for Windows
    • Shell/PowerShell installer scripts
    • SHA256 checksum files
  • Homebrew formula published to bgreenwell/homebrew-tap

    • Automated by: publish-homebrew-formula job in release.yml
  • Scoop manifest published to bgreenwell/scoop-bucket

    • Automated by: .github/workflows/publish-scoop.yml
  • crates.io published at https://crates.io/crates/doxx

    • Automated by: publish-crates-io job in release.yml
  • AUR package updated at doxx-bin

    • Automated by: .github/workflows/publish-aur.yml
    • PKGBUILD and .SRCINFO auto-generated and pushed
  • WinGet manifest PR created to microsoft/winget-pkgs

    • Automated by: .github/workflows/publish-winget.yml
    • Note: PR may require manual merge approval from Microsoft team (1-2 days)

Test Installations

  • Homebrew (macOS/Linux):

    brew update && brew upgrade doxx
    doxx --version
  • Scoop (Windows):

    scoop update && scoop update doxx
    doxx --version
  • AUR (Arch Linux):

    yay -Syu doxx-bin
    doxx --version
  • WinGet (Windows):

    winget upgrade bgreenwell.doxx
    doxx --version

    Note: May take 1-2 days for WinGet PR to be merged

  • Checksums - verify a downloaded binary matches its published SHA256:

    curl -LO https://github.com/bgreenwell/doxx/releases/latest/download/doxx-checksums.txt
    curl -LO https://github.com/bgreenwell/doxx/releases/latest/download/doxx-Linux-x86_64.tar.gz
    sha256sum doxx-Linux-x86_64.tar.gz
    grep Linux-x86_64 doxx-checksums.txt

Post-Release

  • All automated workflows completed successfully (check GitHub Actions)
  • Close release tracking issue

Troubleshooting

GitHub Actions fails: Verify all secrets are configured: HOMEBREW_TAP_TOKEN, SCOOP_BUCKET_TOKEN, CARGO_REGISTRY_TOKEN, AUR_SSH_PRIVATE_KEY, WINGET_TOKEN

AUR automation fails: Check SSH key is valid (AUR_SSH_PRIVATE_KEY secret). Verify doxx-bin package exists at aur.archlinux.org.

WinGet PR not appearing: Check .github/workflows/publish-winget.yml logs. May need to create PR manually with komac update.

Dependabot opens a PR touching release.yml: Don't merge it. release.yml is autogenerated by cargo-dist (see its header comment) - its action pins (actions/upload-artifact, etc.) are whatever that tool's template expects for the installed cargo-dist version, not something to hand-bump. Close the PR and instead bump the pinned cargo-dist version (currently referenced near the top of release.yml, via the cargo-dist-installer.sh download) and re-run dist init/dist generate to regenerate the file consistently.

For detailed workflow information:

  • .github/workflows/release.yml — main release, Homebrew, crates.io
  • .github/workflows/publish-scoop.yml — Scoop bucket
  • .github/workflows/publish-aur.yml — AUR publishing
  • .github/workflows/publish-winget.yml — WinGet manifests