isle/docs/dev/releases.md

47 lines
1.9 KiB
Markdown

# Releases
A release consists of:
- A full set of `isle` binaries for all supported platforms, compiled from the
same source.
- A text file containing hashes of each binary.
- A file containing a signature of the hash file, created by whoever is building
the release.
Releases are named using semantic versioning: <major>.<minor>.<patch>. A
preceding "v" is NOT a part of the canonical release name, though it use used in
specific contexts.
Release artifacts are also be labeled with a suffix indicating build number, eg
"0.1.3-2" which indicates that this is of release "0.1.3". The first build of a
release is always "1". Different build numbers of the same release indicate that
no code is different, only the packaging.
## Building
*NOTE: This has only been tested from an x86_64 linux machine*
To create a release only a functional nix installation is required. Simply run
the `./release.sh` script, providing the release name and build number.
From here an `isle` binary will be cross-compiled for all supported
platforms. This will take a long time the first time you perform it on your
machine.
Once compilation is completed, the release will be signed using the default GPG
key on your machine, and you will be prompted for its password in order to
create the signature.
## Releasing
Release artifacts are hosted at `micropelago.net` under
`/isle/releases/v<release name>`. An `index.gmi` page should be created in that
directory which includes links to each artifact, as well as a changelog
detailing all new features and fixes included since the previous release.
A link to the new release should be included at `/isle/releases/index.gmi`.
Each release should be tagged in the git repo using the release name and build
number prefixed with a "v". If the build number of the release is "1" then the
tag notes should link to the `micropelago.net` release page for the release.