From 6d5aff5325635ce14945184bfb64a06e333df53a Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Mon, 11 May 2026 11:39:38 -0700 Subject: [PATCH 1/5] build: add Linux arm64 to goreleaser build targets Co-Authored-By: Claude --- .goreleaser.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.goreleaser.yml b/.goreleaser.yml index 35f5c8ca..27dd1d33 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -32,6 +32,10 @@ builds: - windows goarch: - amd64 + - arm64 + ignore: + - goos: windows + goarch: arm64 - id: slack-macos binary: bin/slack @@ -74,6 +78,8 @@ archives: {{- .Env.BUILD_VERSION }}_ {{- if eq .Os "darwin" -}} macOS_{{ if eq .Arch "all" }}64-bit{{ else }}{{ .Arch }}{{ end }} + {{- else if eq .Os "linux" -}} + linux_{{ .Arch }} {{- else -}} {{ .Os }}_{{ if eq .Arch "amd64" }}64-bit{{ else }}{{ .Arch }}{{ end }} {{- end }} From 3e8170642061abeb281d6f800c46783a7e4bae16 Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Mon, 11 May 2026 11:40:34 -0700 Subject: [PATCH 2/5] feat: add Linux arm64 support to auto-update Co-Authored-By: Claude --- internal/update/cli_autoupdate.go | 9 ++++++++- internal/update/cli_autoupdate_test.go | 22 ++++++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/internal/update/cli_autoupdate.go b/internal/update/cli_autoupdate.go index 0279a213..702eb0b8 100644 --- a/internal/update/cli_autoupdate.go +++ b/internal/update/cli_autoupdate.go @@ -263,7 +263,14 @@ func getUpdateFileName(version, operatingSys, architecture string) (filename str filename = fmt.Sprintf("slack_cli_%s_macOS_64-bit.zip", version) } case "linux": - filename = fmt.Sprintf("slack_cli_%s_linux_64-bit.tar.gz", version) + switch architecture { + case "amd64": + filename = fmt.Sprintf("slack_cli_%s_linux_amd64.tar.gz", version) + case "arm64": + filename = fmt.Sprintf("slack_cli_%s_linux_arm64.tar.gz", version) + default: + filename = fmt.Sprintf("slack_cli_%s_linux_64-bit.tar.gz", version) + } case "windows": filename = fmt.Sprintf("slack_cli_%s_windows_64-bit.zip", version) default: diff --git a/internal/update/cli_autoupdate_test.go b/internal/update/cli_autoupdate_test.go index 0b16b186..db2af852 100644 --- a/internal/update/cli_autoupdate_test.go +++ b/internal/update/cli_autoupdate_test.go @@ -68,13 +68,31 @@ func Test_CLI_getUpdateFileName(t *testing.T) { version: "3.4.5", operatingSystem: "linux", architecture: "amd64", - expectedFilename: "slack_cli_3.4.5_linux_64-bit.tar.gz", + expectedFilename: "slack_cli_3.4.5_linux_amd64.tar.gz", }, "linux development x86_64": { version: "3.4.5-6-badaabad", operatingSystem: "linux", architecture: "amd64", - expectedFilename: "slack_cli_3.4.5-6-badaabad_linux_64-bit.tar.gz", + expectedFilename: "slack_cli_3.4.5-6-badaabad_linux_amd64.tar.gz", + }, + "linux production arm64": { + version: "3.4.5", + operatingSystem: "linux", + architecture: "arm64", + expectedFilename: "slack_cli_3.4.5_linux_arm64.tar.gz", + }, + "linux development arm64": { + version: "3.4.5-6-badaabad", + operatingSystem: "linux", + architecture: "arm64", + expectedFilename: "slack_cli_3.4.5-6-badaabad_linux_arm64.tar.gz", + }, + "linux production unknown arch fallback": { + version: "3.4.5", + operatingSystem: "linux", + architecture: "riscv64", + expectedFilename: "slack_cli_3.4.5_linux_64-bit.tar.gz", }, "windows production x86_64": { version: "3.4.5", From 837c098a93945e80a13cd55106652b6d2f6bbd6f Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Mon, 11 May 2026 11:41:25 -0700 Subject: [PATCH 3/5] feat: detect Linux architecture in install scripts Co-Authored-By: Claude --- scripts/install-dev.sh | 16 +++++++++++++++- scripts/install.sh | 16 +++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/scripts/install-dev.sh b/scripts/install-dev.sh index 0b1b1e3a..b90c6514 100755 --- a/scripts/install-dev.sh +++ b/scripts/install-dev.sh @@ -144,7 +144,21 @@ install_slack_cli() { esac fi elif [ "$(expr substr "$(uname -s)" 1 5)" == "Linux" ]; then - slack_cli_url="https://downloads.slack-edge.com/slack-cli/slack_cli_${SLACK_CLI_DEV_VERSION}_linux_64-bit.tar.gz" + if version_lt "$SLACK_CLI_DEV_VERSION" "4.1.0"; then + slack_cli_url="https://downloads.slack-edge.com/slack-cli/slack_cli_${SLACK_CLI_DEV_VERSION}_linux_64-bit.tar.gz" + else + case "$(uname -m)" in + x86_64) + slack_cli_url="https://downloads.slack-edge.com/slack-cli/slack_cli_${SLACK_CLI_DEV_VERSION}_linux_amd64.tar.gz" + ;; + aarch64 | arm64) + slack_cli_url="https://downloads.slack-edge.com/slack-cli/slack_cli_${SLACK_CLI_DEV_VERSION}_linux_arm64.tar.gz" + ;; + *) + slack_cli_url="https://downloads.slack-edge.com/slack-cli/slack_cli_${SLACK_CLI_DEV_VERSION}_linux_64-bit.tar.gz" + ;; + esac + fi else echo "🛑 Error: This installer is only supported on Linux and macOS" echo "🔖 Try using a different installation method:" diff --git a/scripts/install.sh b/scripts/install.sh index be6d05ff..2bdabb5a 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -146,7 +146,21 @@ install_slack_cli() { esac fi elif [ "$(expr substr "$(uname -s)" 1 5)" == "Linux" ]; then - slack_cli_url="https://downloads.slack-edge.com/slack-cli/slack_cli_${SLACK_CLI_VERSION}_linux_64-bit.tar.gz" + if version_lt "$SLACK_CLI_VERSION" "4.1.0"; then + slack_cli_url="https://downloads.slack-edge.com/slack-cli/slack_cli_${SLACK_CLI_VERSION}_linux_64-bit.tar.gz" + else + case "$(uname -m)" in + x86_64) + slack_cli_url="https://downloads.slack-edge.com/slack-cli/slack_cli_${SLACK_CLI_VERSION}_linux_amd64.tar.gz" + ;; + aarch64 | arm64) + slack_cli_url="https://downloads.slack-edge.com/slack-cli/slack_cli_${SLACK_CLI_VERSION}_linux_arm64.tar.gz" + ;; + *) + slack_cli_url="https://downloads.slack-edge.com/slack-cli/slack_cli_${SLACK_CLI_VERSION}_linux_64-bit.tar.gz" + ;; + esac + fi else echo "🛑 Error: This installer is only supported on Linux and macOS" echo "🔖 Try using a different installation method:" From 6508bf89b075b00157768ee1f4537fb78db386d0 Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Mon, 11 May 2026 11:42:11 -0700 Subject: [PATCH 4/5] build: produce Linux arm64 and amd64 archives Co-Authored-By: Claude --- scripts/archive-test.sh | 6 ++++++ scripts/archive.sh | 30 ++++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/scripts/archive-test.sh b/scripts/archive-test.sh index 59b7c146..3da5b082 100755 --- a/scripts/archive-test.sh +++ b/scripts/archive-test.sh @@ -58,8 +58,14 @@ main() { check_zip "$DIST_DIR/slack_cli_${VERSION}_macos.zip" echo "Checking Linux archives" + check_tar "$DIST_DIR/slack_cli_${VERSION}_linux_amd64.tar.gz" + check_tar "$DIST_DIR/slack_cli_${VERSION}_linux_arm64.tar.gz" check_tar "$DIST_DIR/slack_cli_${VERSION}_linux_64-bit.tar.gz" + check_tar "$DIST_DIR/slack_cli_dev_linux_amd64.tar.gz" + check_tar "$DIST_DIR/slack_cli_dev_linux_arm64.tar.gz" check_tar "$DIST_DIR/slack_cli_dev_linux_64-bit.tar.gz" + check_tar "$DIST_DIR/slack_cli_latest_linux_amd64.tar.gz" + check_tar "$DIST_DIR/slack_cli_latest_linux_arm64.tar.gz" check_tar "$DIST_DIR/slack_cli_latest_linux_64-bit.tar.gz" echo "Checking Windows archives" diff --git a/scripts/archive.sh b/scripts/archive.sh index e9dad671..aabf6af2 100755 --- a/scripts/archive.sh +++ b/scripts/archive.sh @@ -81,16 +81,30 @@ main() { echo "Creating Linux archives" - linux_targz_file_path_version="$DIST_DIR/slack_cli_${VERSION}_linux_64-bit.tar.gz" - linux_targz_file_path_dev="$DIST_DIR/slack_cli_dev_linux_64-bit.tar.gz" - linux_targz_file_path_latest="$DIST_DIR/slack_cli_latest_linux_64-bit.tar.gz" - - echo "-> Creating Linux development tar.gz file" - cp "$linux_targz_file_path_version" "$linux_targz_file_path_dev" + linux_targz_file_path_version_amd64="$DIST_DIR/slack_cli_${VERSION}_linux_amd64.tar.gz" + linux_targz_file_path_version_arm64="$DIST_DIR/slack_cli_${VERSION}_linux_arm64.tar.gz" + linux_targz_file_path_version_64bit="$DIST_DIR/slack_cli_${VERSION}_linux_64-bit.tar.gz" + linux_targz_file_path_dev_amd64="$DIST_DIR/slack_cli_dev_linux_amd64.tar.gz" + linux_targz_file_path_dev_arm64="$DIST_DIR/slack_cli_dev_linux_arm64.tar.gz" + linux_targz_file_path_dev_64bit="$DIST_DIR/slack_cli_dev_linux_64-bit.tar.gz" + linux_targz_file_path_latest_amd64="$DIST_DIR/slack_cli_latest_linux_amd64.tar.gz" + linux_targz_file_path_latest_arm64="$DIST_DIR/slack_cli_latest_linux_arm64.tar.gz" + linux_targz_file_path_latest_64bit="$DIST_DIR/slack_cli_latest_linux_64-bit.tar.gz" + + echo "-> Creating Linux 64-bit fallback (amd64 copy)" + cp "$linux_targz_file_path_version_amd64" "$linux_targz_file_path_version_64bit" + ls -l "$DIST_DIR"/*_"$VERSION"_linux* + + echo "-> Creating Linux development tar.gz files" + cp "$linux_targz_file_path_version_amd64" "$linux_targz_file_path_dev_amd64" + cp "$linux_targz_file_path_version_arm64" "$linux_targz_file_path_dev_arm64" + cp "$linux_targz_file_path_version_amd64" "$linux_targz_file_path_dev_64bit" ls -l "$DIST_DIR"/*dev_linux* - echo "-> Creating Linux production tar.gz file" - cp "$linux_targz_file_path_version" "$linux_targz_file_path_latest" + echo "-> Creating Linux latest tar.gz files" + cp "$linux_targz_file_path_version_amd64" "$linux_targz_file_path_latest_amd64" + cp "$linux_targz_file_path_version_arm64" "$linux_targz_file_path_latest_arm64" + cp "$linux_targz_file_path_version_amd64" "$linux_targz_file_path_latest_64bit" ls -l "$DIST_DIR"/*latest_linux* echo "Creating Windows archives" From 6ba84a46ae8678c8f69a792eca42c81e2999bae9 Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Mon, 11 May 2026 11:42:32 -0700 Subject: [PATCH 5/5] ci: update S3 upload pattern for Linux arm64 feature builds Co-Authored-By: Claude --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c0b825b9..9163c100 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -647,7 +647,7 @@ workflows: <<: *filters-tag-triggered-workflow-job name: upload-to-s3-for-install-linux-feature-build s3-target-path: slack-cli - file-name: "slack_cli_*feature_linux_64-bit.tar.gz" + file-name: "slack_cli_*feature_linux_*.tar.gz" requires: - create-github-release-and-artifacts context: slack-cli-release