Building a channel
build-channel
is a Rust script that creates a channel that serves as a source of distribution of
the Fuel toolchain. This is accomplished by querying and collecting a list of downloadable components that
Fuel Labs publishes, creating a TOML file based on the collated data, which is then consumed by fuelup
during usage.
To learn about the args and options used in the script, skip to Usage.
Use cases
There are 2 main ways the build-channel
script is used: in the CI, and manually.
CI
This script's main usage is found within the fuelup
CI. This script is in charge of publishing the latest
and
nightly
channels on a routine basis.
The latest
channel is re-built if the check versions workflow detects a new release of forc
or fuel-core
, and
compatibility tests pass after that. This is explained in detail in the latest channel developer guide.
An example of this usage is in test-toolchain-compatibility.yml
.
The nightly
channel is more straightforward - a channel is built at 01:00 UTC every day, containing the download
links to binaries found within the sway-nightly-binaries repository.
An example of this usage is in publish-nightly-channel.yml
.
Manual
There may be times when we need a channel for a one-off event e.g. testnets. During these events, we do not
require a routine update, and can essentially publish once and be done. This is when manual publishing is done.
For example, building a testnet
toolchain is done like so:
# from fuelup project root
cd ci/build-channel && cargo run -- channel-fuel-testnet.toml 2023-02-13 forc=0.35.0 fuel-core=0.17.1
The above command means that we're building a channel named channel-fuel-testnet.toml
with the date 2023-02-13
(YYYY-MM-DD
)
and forc
and fuel-core
versions 0.35.0
and 0.17.1
respectively, and the latest versions for the other unlisted components.
Other than for these one-off events, manually running build-channel
locally is a good sanity check when working
on this codebase.
Usage
Arguments
OUT_FILE
- Name of TOML file that will be created.
PUBLISH_DATE
- The date for when the channel was created and published.
GITHUB_RUN_ID
- Optional. This is the
$GITHUB_RUN_ID
variable in the GitHub CI. Identifies the specific run that a channel was published by.
PACKAGES
- Optional. A list of key-value pairs mapping component names to SemVer-compatible versions, e.g. 'fuel-core=0.17.1'
Options
--nightly
- Optional. Specify if we are building a nightly channel.