* Add function to calculate previous tag. * WIP * WIP * Update scripts * Remove old setup job * Fix bad prev tag * Updates * Don't run job on release tags anymore. * Add status check to script * Only use job inputs * Add build re-tries on windows release * Update docs * Fix typo in tool path * Add CI cache on releases * Ensure we have a recent `gh` version * Update release steps * Use newer ubuntu to get latest gh version * Tag commit before kicking off release job, ensuring the release is run on a named commit * Try to improve release caching * Ensure we check out the desired tag * Fix version * Remove prerelease flag * Add example of using a target * Use workflow from trunk
3.0 KiB
Release Steps
1. (Major milestones only) New Base Release
Cut a release of base. @runarorama does this usually.
.> pull git(git@github.com:unisonweb/base) basedev.release
.> cd .basedev.release
.basedev.release> delete.namespace releases._latest
.basedev.release> squash trunk releases._<ReleaseName>
Edit releases._<ReleaseName>.README
to include Release: <ReleaseName>
.
.basedev.release> fork releases._<ReleaseName> releases._latest
.basedev.release> push git(git@github.com:unisonweb/base)
2. Run Release script
- Milestone Release: Look up the most recent release; bump the number and remove any trailing letters, e.g.
./scripts/make-release release/M5 trunk
- Minor Release: Increment the trailing letter of the previous release, or add an
a
to the previous milestone release, e.g../scripts/make-release release/M5a trunk
Then, using the new release version, from the root of the unisonweb/unison
project run:
./scripts/make_release.sh <VERSION> [TARGET (defaults to trunk)]
This will tag the appropriate versions in all the required projects, and kick off all of the necessary CI jobs to ship a release.
Including:
- A release workflow in
unisonweb/unison
to build UCM on multiple platforms, create a release with appropriate release notes from the previous release, and upload the artifacts to that release. - A release workflow in
unison-local-ui
to build UCM on multiple platforms, create a release with appropriate release notes from the previous release, and upload the artifacts to that release. - A release workflow in
homebrew-unison
to wait for artifacts to be uploaded, then download those artifacts, get the checksums, and create an up-to-date homebrew formula.
After successfully executing the script you just have to sit tight and wait for all the jobs to complete.
3
Smoke test of the new release. Try brew upgrade unison-language
, launch it, launch ui
.
4
Announce on #general Slack channel. Template below.
Release announcement template (be sure to update the release urls) -
We've just released a new version of Unison, $RELEASE_NAME, release notes here (link to the issue). Install/upgrade instructions in the thread.
Mac upgrade is just brew upgrade unison-language
.
A fresh install via:
brew tap unisonweb/unison
brew install unison-language
If you have previously done brew install unison-language --head to install a dev build, uninstall that first via brew uninstall unison-language.
Linux manual install:
mkdir unisonlanguage
curl -L https://github.com/unisonweb/unison/releases/download/release%2FM2h/ucm-linux.tar.gz --output unisonlanguage/ucm.tar.gz
tar -xzf unisonlanguage/ucm.tar.gz -C unisonlanguage
./unisonlanguage/ucm
Mac manual install:
mkdir unisonlanguage
curl -L https://github.com/unisonweb/unison/releases/download/release%2FM2h/ucm-macos.tar.gz --output unisonlanguage/ucm.tar.gz
tar -xzf unisonlanguage/ucm.tar.gz -C unisonlanguage
./unisonlanguage/ucm