⌘K

Icon SunFilledIcon MoonStars
Building a Channel

Icon LinkBuilding 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 .

Icon LinkUse cases

There are 2 main ways the build-channel script is used: in the CI, and manually.

Icon LinkCI

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 Icon Link 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 Icon Link.

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 Icon Link.

An example of this usage is in publish-nightly-channel.yml Icon Link.

Icon LinkManual

There may be times where we need a channel for a one-off event eg. 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 beta-3 toolchain is done like so:

# from fuelup project root
cd ci/build-channel && cargo run -- channel-fuel-beta-3.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-beta-3.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.

Icon LinkUsage

Icon LinkArguments

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 Icon Link 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 Icon Link-compatible versions, eg. 'fuel-core=0.17.1'

Icon LinkOptions

--nightly

  • Optional. Specify if we are building a nightly channel.