Sortix volatile manual
This manual documents Sortix volatile, a development build that has not been officially released. You can instead view this document in the latest official manual.
NAME
tix-release — create and sign tix releases and channelsSYNOPSIS
tix-release |
[--authoritative=url] [--build-id=build-id] [--channel=name] [--dev-releases] [--extra-releases=releases] [--generation=level] [--key-search=path-prefix] [--main=url] [--mirrors=urls] [--new-release-url=url] [--new-release-pub-path=public-key] [--public-key=file] [--release=name] [--release-directories=directory] [--release-filter=extended-regex] [--releases=list] [--same-signing] [--secret-key=file] [--sign] [--unskippable=[all | major | minor | last-patch | patch | none ]] [--upgrade-release=new-release] [--version=version] [--which-public-key] [--which-secret-key] [channel | channel-entry | channels | release | sign] directory |
DESCRIPTION
tix-release creates tix releases and channels, and signs their information for publication.- A release is a particular static versioned build.
- A channel dynamically redirects each version to the appropriate release, optionally offering an upgrade to a newer version.
- channel
-
Generate a channel inside the top-level channel directory named per the --channel option using the releases from the --release-directories option.
- channel-entry
-
Generate an entry for a single version on a channel. This low-level command allows manually constructing the channel upgrade graph.
- channels
-
Generate common channels inside the top-level channel directory:
- A stable channel with stable releases.
- A ${major}.${minor} channel for every major/minor version pair, containing all the patch releases.
- A ${extra_release} channel for every specified --extra-releases containing the normal releases and that extra release.
- release
-
Generate the top-level release metadata files in the output release directory:
- release.info
- sha256sum
- sign
-
Sign release.info and sha256sum (if it exists) in the directory as a separate step from creating the files. The --sign option can be used with any of the other commands to sign the files as a single step at creation time.
- --authoritative=url
-
The url to the top-level authoritative distribution site, in which the channel directory will be published.
- --build-id=build-id
-
Set the BUILD_ID to build-id, a unique identifier of what was built, allowing installations to know if they are up to date.
- --channel=name
-
The name of the channel being created.
- --dev-releases
- When searching for releases, implicitly add releases ending in -dev for every version found. This option ensures that all dev releases that might have existed (but no longer do) still have an upgrade path.
- --extra-releases=releases
- Additional releases to include for the channel command. For the channels command, each such extra release has its own channel made with itself as the only extra release.
- --generation=generation
- Select tix metadata generation level (Default: 3)
- --key-search=path-prefix
-
Search for the public and secret keys in the file paths starting with this path-prefix, an optional middle section, and ending in .pub for the public key and .sec for the secret key.
- The release.
- The version.
- The major, minor, and patch version numbers.
- The major and minor version numbers.
- The major version number.
- The empty string.
- --main=url
- The url to the main mirror.
- --mirrors=urls
- The space-separated urls to the secondary mirrors.
- --new-release-url=url
- Override the url to the new release when offering an upgrade in the channel-entry command.
- --new-release-pub-path=public-key
- Override which public-key to trust when offering an upgrade in the channel-entry command.
- --public-key=file
- Sign the release or channel with the signify(1) public key file.
- --release=name
-
The name of the release.
- --release-directories=directory
-
Find releases inside this directory.
- --release-filter=extended-regex
- Find the list of releases by searching the --release-directories directory for entries matching this extended-regex given to grep(1) -E.
- --releases=list
- Override the --release-filter search by manually specifying the space-separated list of releases.
- --same-signing
- When signing a channel using --key-search, try to sign the channel using the same keys as the underlying release, by searching for an identical public key.
- --secret-key=file
- Sign the release or channel with the signify(1) secret key file.
- --sign
- Sign the output release.info files per the --public-key, --secret-key, --key-search, and --same-signing options. This option can be used with any command and has the same effect as the sign command.
-
--unskippable=[
all | major | minor | last-patch | patch | none
] -
Build the channel upgrade paths according to this rule:
- all
- Don't allow skipping any release (including prerelease).
- patch
- Don't allow skipping patch releases.
- last-patch
- Don't allow skipping the last patch of a minor release.
- minor
- Don't allow skipping minor releases.
- major
- Don't allow skipping major releases.
- none
- Allow skipping any release.
- --upgrade-release=new-release
- Offer an upgrade to the new-release when using the channel-entry command.
- --version=version
-
The version of the release.
- --which-public-key
- Output the path to the chosen public key.
- --which-secret-key
- Output the path to the chosen secret key.
ENVIRONMENT
- SOURCE_DATE_EPOCH
- Use this timestamp for the DATETIME field in the release information.
EXIT STATUS
tix-release will exit 0 on success and non-zero otherwise.EXAMPLES
Create a new tix release
See tix-metabuild(8) for an example of how to make a new tix release.Sign a tix release
First create a signing key, either a general signing key to be reused across releases, or a per-release signing key to be rotated:mkdir -p keys signify -G -c 'local repository signing key' -p keys/local.pub -s keys/local.sec
tix-release \ --secret-key=keys/local.sec \ --public-key=keys/local.pub \ sign release/1.0
Create a stable channel with the tix release
Publish the newly signed release on the main site and mirrors:tar -c release/1.0 | ssh example.com 'tar -C /var/www/example.com/local -x' tar -c release/1.0 | ssh cdn.example.com 'tar -C /var/www/cdn.example.com/local -x' tar -c release/1.0 | ssh example.net 'tar -C /var/www/example.net/local -x'
tix-release \ --authoritative=https://example.com/local \ --channel=stable \ --main=https://example.com/local/release \ --mirrors='https://cdn.example.com/local/release https://example.net/local/release' \ --public-key=keys/local.pub \ --release-directory=release \ --secret-key=keys/local.sec \ --sign \ channel channel/
tar -c channel/stable | \ ssh example.com 'tar -C /var/www/example.com/local -x'
Generate multiple channels
The channels command is useful for generating multiple channels in one invocation. It creates a stable channel, and channel for every major and minor version pair, as well channels for any extra releases (such as nightly development releases).tix-release \ --authoritative=https://example.com/local \ --dev-releases \ --extra-releases='nightly cross-nightly' \ --key-search=keys/local \ --main=https://example.com/local/release \ --mirrors='https://cdn.example.com/local/release https://example.net/local/release' \ --release-directory=release \ --sign \ channels channel/
Install the custom ports in a local tix collection
The custom ports can now be installed from any installation by creating a tix collection pointed to the stable channel:tix-collection /local create \ --release-url=https://example.com/local/channel/stable/1.0 \ --release-key=keys/local.pub tix /local install foo bar
tix-upgrade --collection=/local