Skip to content

ci: attach only versioned archives to production GitHub releases - #786

Merged
zimeg merged 1 commit into
mainfrom
release-assets-stable-only
Nov 13, 2026
Merged

zimeg merged 1 commit into
mainfrom
release-assets-stable-only

Conversation

@zimeg

@zimeg zimeg commented Nov 13, 2026

Copy link
Copy Markdown
Member

Changelog

N/A, this changes release automation only.

Summary

This pull request attaches only the versioned archives to production GitHub releases, so the slack_cli_dev_* and slack_cli_latest_* copies stop showing up on stable releases.

  • scripts/archive.sh copies each versioned archive to _dev and _latest names for the install scripts. The create-github-release-and-artifacts job then uploaded every slack_* file in the artifacts directory to the release.
  • When production is true, the upload loop now skips slack_cli_dev_* and slack_cli_latest_*. Nothing else changes.
  • The workspace that the s3-upload jobs attach is still persisted unfiltered, so downloads.slack-edge.com (the installers and slack upgrade) gets the same files as before.
  • dev-build and -feature prereleases run with production: false and keep every archive.

Before, v4.14.0 had 25 assets: 11 slack_cli_4.14.0_*, 7 slack_cli_dev_* and 7 slack_cli_latest_*.

After, a production release has 11 assets:

slack_cli_<version>_linux_64-bit.tar.gz
slack_cli_<version>_linux_amd64.tar.gz
slack_cli_<version>_linux_arm64.tar.gz
slack_cli_<version>_macOS_64-bit.tar.gz
slack_cli_<version>_macOS_64-bit.zip
slack_cli_<version>_macOS_amd64.tar.gz
slack_cli_<version>_macOS_amd64.zip
slack_cli_<version>_macOS_arm64.tar.gz
slack_cli_<version>_macOS_arm64.zip
slack_cli_<version>_macos.zip
slack_cli_<version>_windows_64-bit.zip

Testing

The upload step needs the release token and a tagged pipeline, so I couldn't do a full dry run. Instead:

  • Created empty files named after the 25 v4.14.0 release assets, plus install*.sh and release_ref, in a temp directory. Then ran both find branches against it: production=true selected the 11 versioned files above, and production=false selected all 25.
  • Confirmed the S3 globs (slack_cli_*.tar.gz, slack_cli_dev_*.tar.gz, slack_cli_*_windows_64-bit.zip, …) read from the attached workspace and not from the release, so their inputs don't change.
  • Confirmed scripts/install*.sh and internal/update download from downloads.slack-edge.com, not from GitHub release assets.
  • After merge, the next stable release should list 11 assets, and the next dev-build should still list all 25.

Notes

  • Existing releases keep their assets. This change applies from the next release on.

Requirements

🤖 Generated with Claude Code

The dev and latest archives still upload to S3 for the install scripts
and dev builds, and stay on dev-build and feature prereleases.

Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
@zimeg
zimeg requested a review from a team as a code owner November 13, 2026 21:12
@zimeg zimeg added this to the Next Release milestone Nov 13, 2026
@zimeg zimeg added semver:patch Use on pull requests to describe the release version increment build M-T: Changes to compilation and CI processes labels Nov 13, 2026
@zimeg zimeg self-assigned this Nov 13, 2026
@zimeg zimeg changed the title ci: attach only versioned archives to production github releases ci: attach only versioned archives to production GitHub releases Nov 13, 2026

@cchensh cchensh left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@zimeg

zimeg commented Nov 13, 2026

Copy link
Copy Markdown
Member Author

📦 Thanks for the kind review @cchensh! The next stable release should list just the 11 versioned archives.

@zimeg
zimeg merged commit 1ea2a0e into main Nov 13, 2026
13 checks passed
@zimeg
zimeg deleted the release-assets-stable-only branch November 13, 2026 21:22
@mwbrooks

Copy link
Copy Markdown
Member

@zimeg one follow-up after merge: releases/latest/download/slack_cli_latest_linux_amd64.tar.gz is the one GitHub URL that always points at the newest stable build, and a few public dotfiles use it (tim-heinsohn/dotfiles, alohays/dotfiles). Could we keep slack_cli_latest_* on stable releases and drop only slack_cli_dev_*? Happy to open the PR.

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

Labels

build M-T: Changes to compilation and CI processes semver:patch Use on pull requests to describe the release version increment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants