gossip/packaging/RELEASE.md

3.1 KiB

RELEASE

Phase 1 - Test and stabilize the codebase

Don't update dependencies

Don't do a cargo update. Too risky right before a release. Do that kind of stuff right after releasing.

Test it on Windows and MacOS.

Yes, actually do this. We often find problems.

Test it with a new user on Linux, Windows and MacOS.

Many problems come up for new users that we normally never see.

fmt, clippy, test

cargo clippy
cargo test
cargo fmt

Update documentation

Update the following

  • README.md
  • LICENSE.txt may need a copyright range update
  • Help page in the UI

Pre-update the packaging files

  • packaging/debian/Dockerfile may need a new rust version
  • packaging/windows/gossip.VERSION.wxs will need 3 edits
    • Update the Package.Version near the top
    • Update the SummaryInformation.Description near the bottom
    • Update the Package.ProductCode GUID near the top to a new random one

Phase 2 - Release

  • Create a new release branch (if not a point release)
  • Update */Cargo.toml to change the version number
  • COMPILE! at least once to get a new Cargo.lock
  • Commit the three changed Cargo files with the commit description as the release number, e.g. "0.11.1"
  • Tag the relase with a 'v' prefix, e.g. 'v0.11.1'
  • Push the branch and the tag to github:
git push github
git push --tags github

Phase 3 - Build the packages

Debian

cd debian
./deb.sh

AppImage

cd appimage
./build-appimage.sh

Flatpak

Windows

MacOS

cd macos
./build_macos.sh
./build_macos_intel.sh

Phase 4 - Describe the release

Review the changes from last time, and create a summary description in a README.txt file and put that into a packaging directory.

Phase 5 - Bundle

Copy binaries into the release directory:

You should have six binary artifacts from the build phase, like this:

  • gossip-$VERSION-1_amd64.deb
  • gossip-$VERSION-Darwin-arm64.dmg
  • gossip-$VERSION-Darwin-x86_64.dmg
  • gossip.$VERSION.flatpak
  • gossip.$VERSION.msi
  • gossip-$VERSION-x86_64.AppImage.tar.gz

Copy these into the release directory.

Copy these into the release directory:

  • gossip/filter.rhai.example
  • gossip/LICENSE.txt
  • gossip/packaging/
  • gossip/docs/README.flatpak.txt
  • gossip/docs/README.macos.txt
  • gossip/docs/README.upgrading.txt

Create a changelog and put into the release directory

Substituting for $PREV, $CURRENT and $PACKAGINGDIR:

    git log --oneline v$PREV..v$CURRENT > $PACKAGINGDIR/changelog-$CURRENT.txt

Create a file with the SHA hashes

SHA256sum * > ./SHA256sums.txt

Phase 6 - Publish

On GitHub, make a new release.

Use the git tag of the release

Drag all the files into the release

In the release description, copy the contents of README.txt

Publish as the latest release

Phase 7 - Update Archlinux User Repository

  • Update the AUR packages

Phase 8 - Announce on NOSTR

  • Announce release on nostr under gossip account
  • Repost as Mike Dilger