Skip to content

Conversation

@robert-zaremba
Copy link

Description

Closes: #25136

I've implemented a lightweight release package (option 2. in the issue linked above) for the Sui.
The solution creates an additional light release artifact containing only the essential sui and move-analyzer binaries, significantly reducing the download size for users who don't need all the tools.

Changes Made:

  • binary-build-list.json - Added a new light_binaries section that specifies which binaries should be included in the light package (currently just sui).
  • release.yml - Modified the release workflow to:
    • Create a separate light build directory alongside the full release directory
    • Copy only the light_release binaries to the light directory
    • Package both full and light releases as separate .tgz files (e.g., sui-testnet-v1.0.0-linux-x86_64.tgz and sui-testnet-v1.0.0-linux-x86_64-light.tgz)
    • Upload both packages to S3 and attach them to GitHub releases
    • Handle existing archives by creating light versions from full packages if they don't exist yet

Benefits:

  • Reduced size: The light package will be significantly smaller since it only contains the sui binary (no debug binary, no sui-node, sui-tool, sui-faucet, sui-bridge, sui-bridge-cli, sui-test-validator, or move-analyzer)
  • Backward compatibility: The full release package remains unchanged, so existing workflows continue to work
  • Flexibility: Users can choose between the full package (for development/operations) or the light package (for quick CLI usage)
  • Easy extension: The light_binaries array in binary-build-list.json can be easily modified to include additional binaries if needed

Test plan

Tag a new release.


Release notes

Check each box that your changes affect. If none of the boxes relate to your changes, release notes aren't required.

For each box you select, include information after the relevant heading that describes the impact of your changes that a user might notice and any actions they must take to implement updates.

  • Protocol:
  • Nodes (Validators and Full nodes):
  • gRPC:
  • JSON-RPC:
  • GraphQL:
  • CLI:
  • Rust SDK:
  • Indexing Framework:

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new “light” release artifact for Sui that packages only a subset of binaries, enabling smaller downloads while keeping the existing full release artifact unchanged.

Changes:

  • Introduces a light_binaries list in binary-build-list.json to define binaries included in the light package.
  • Extends the GitHub Actions release workflow to build/download, package, upload, and attach both full and -light .tgz artifacts.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.

File Description
binary-build-list.json Adds a light_binaries section to drive which binaries go into the light release package.
.github/workflows/release.yml Creates a parallel light build directory, produces -light.tgz artifacts, uploads to S3, and attaches to GitHub releases (including backfill behavior when full archives already exist).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Removed light archive handling from the release workflow and use existing full archive to construct light release artifacts.
- Create light artifacts only for ubuntu-ghcloud and ubuntu-arm64
@vercel
Copy link

vercel bot commented Jan 29, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sui-docs Ready Ready Preview, Comment Jan 29, 2026 10:26pm
2 Skipped Deployments
Project Deployment Actions Updated (UTC)
multisig-toolkit Ignored Ignored Preview Jan 29, 2026 10:26pm
sui-kiosk Ignored Ignored Preview Jan 29, 2026 10:26pm

Request Review

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +212 to +213
for binary in $(cat ${{ env.BINARY_LIST_FILE }} | jq -r '.light_binaries[]'); do
export binary=$(echo ${binary} | tr -d $'\r')
Copy link

Copilot AI Jan 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the repo is checked out at the target tag (ref: ${{ env.sui_tag }}), older tags won’t contain the new light_binaries key in binary-build-list.json. In that case jq -r '.light_binaries[]' will error and fail the job, which conflicts with the stated goal of generating light archives for already-existing releases. Consider making the jq query tolerant (e.g., defaulting to a minimal list) or sourcing the build list from the workflow revision instead of the tag checkout.

Suggested change
for binary in $(cat ${{ env.BINARY_LIST_FILE }} | jq -r '.light_binaries[]'); do
export binary=$(echo ${binary} | tr -d $'\r')
LIGHT_BINARIES=$(jq -r 'if has("light_binaries") then .light_binaries[] else "sui" end' "${{ env.BINARY_LIST_FILE }}")
for binary in ${LIGHT_BINARIES}; do
export binary=$(echo "${binary}" | tr -d $'\r')

Copilot uses AI. Check for mistakes.
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's ok, we don't re-release older releases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

releases: create a light release without debug & extra binaries

1 participant