Skip to content

Commit 1023fbc

Browse files
Download from S3 instead of GitHub
This reverts commit 5cf721e.
1 parent f603dbb commit 1023fbc

File tree

3 files changed

+56
-19
lines changed

3 files changed

+56
-19
lines changed

.github/workflows/release.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ jobs:
2929
version: "~> v2"
3030
args: release --clean
3131
env:
32+
# Action-scoped GitHub token used for downloading code, etc.
3233
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
33-
# Homebrew tap token for publishing to timescale/homebrew-tap
34+
# Cross-repo GitHub token for publishing to timescale/homebrew-tap
3435
TAP_GITHUB_TOKEN: ${{ secrets.API_TOKEN_GITHUB_CLOUD }}
36+
# AWS credentials for pushing to tiger-cli-releases S3 bucket
37+
AWS_ACCESS_KEY_ID: ${{ secrets.ORG_AWS_ACCESS_KEY_ID }}
38+
AWS_SECRET_KEY_ID: ${{ secrets.ORG_AWS_SECRET_ACCESS_KEY }}
39+
AWS_REGION: us-east-1

.goreleaser.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ version: 2
44

55
project_name: tiger-cli
66

7+
# Create VERSION file before building
8+
before:
9+
hooks:
10+
- echo "{{ .Tag }}" > latest.txt
11+
712
builds:
813
- main: ./cmd/tiger
914
env:
@@ -64,6 +69,34 @@ nfpms:
6469
lintian_overrides:
6570
- statically-linked-binary
6671

72+
73+
# S3 Blob Storage Configuration
74+
blobs:
75+
# Versioned release artifacts
76+
- provider: s3
77+
bucket: tiger-cli-releases # TODO: Actual S3 bucket name
78+
region: us-east-1
79+
directory: "releases/{{ .Tag }}"
80+
ids:
81+
- archive # Archive ID
82+
- packages # nfpms package ID
83+
# Set public read ACL for downloads
84+
acl: public-read
85+
86+
# Upload install script and latest version file to bucket root (skip for prereleases)
87+
- provider: s3
88+
bucket: tiger-cli-releases # TODO: Actual S3 bucket name
89+
region: us-east-1
90+
directory: "" # Root of bucket
91+
acl: public-read
92+
extra_files_only: true
93+
disable: '{{ .Prerelease }}' # Skip this step for pre-releases
94+
extra_files:
95+
- glob: ./latest.txt
96+
name_template: "latest.txt"
97+
- glob: ./scripts/install.sh
98+
name_template: "install.sh"
99+
67100
# Homebrew cask configuration
68101
homebrew_casks:
69102
- name: tiger-cli
@@ -80,6 +113,8 @@ homebrew_casks:
80113
Command-line interface for managing TigerData Cloud Platform resources
81114
binary: tiger
82115
license: Apache-2.0
116+
url:
117+
template: "https://tiger-cli-releases.s3.us-east-1.amazonaws.com/releases/{{ .Tag }}/{{ .ArtifactName }}"
83118
hooks:
84119
# TODO: Sign and notarize instead of removing quarantine bit
85120
# See: https://goreleaser.com/customization/homebrew_casks/#signing-and-notarizing

scripts/install.sh

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ REPO_NAME="tiger-cli"
99
BINARY_NAME="tiger"
1010
INSTALL_DIR="${TIGER_INSTALL_DIR:-/usr/local/bin}"
1111

12-
# GitHub Repository Configuration
13-
GITHUB_OWNER="timescale"
14-
GITHUB_REPO="tiger-cli"
15-
GITHUB_URL="https://github.com/${GITHUB_OWNER}/${GITHUB_REPO}"
16-
GITHUB_API_URL="https://api.github.com/repos/${GITHUB_OWNER}/${GITHUB_REPO}"
12+
# S3 Configuration (primary download source)
13+
S3_BUCKET="${TIGER_S3_BUCKET:-tiger-cli-releases}"
14+
S3_BASE_URL="https://${S3_BUCKET}.s3.amazonaws.com"
1715

1816
# Colors for output
1917
RED='\033[0;31m'
@@ -83,18 +81,15 @@ command_exists() {
8381
}
8482

8583

86-
# Get latest version from GitHub API
84+
# Get latest version from S3
8785
get_latest_version() {
88-
local api_url="${GITHUB_API_URL}/releases/latest"
89-
90-
# Get latest release info from GitHub API
86+
# Try to get version from S3 latest.txt file at bucket root
9187
local version
92-
version=$(curl -fsSL "${api_url}" 2>/dev/null | grep '"tag_name":' | sed -E 's/.*"tag_name":[ ]*"([^"]+)".*/\1/' || echo "")
88+
version=$(curl -fsSL "${S3_BASE_URL}/latest.txt" 2>/dev/null | head -n1 | tr -d '\n\r' || echo "")
9389

9490
if [ -z "${version}" ]; then
95-
log_error "Failed to get latest release from GitHub API"
96-
log_error "URL: ${api_url}"
97-
log_error "Make sure the repository has at least one release published"
91+
log_error "latest.txt file not found in S3 bucket root"
92+
log_error "URL: ${S3_BASE_URL}/latest.txt"
9893
exit 1
9994
fi
10095

@@ -111,18 +106,20 @@ install_binary() {
111106
tmp_dir="$(mktemp -d)"
112107
trap 'rm -rf "${tmp_dir}"' EXIT
113108

114-
# Construct archive name (matches GoReleaser naming convention)
109+
# Construct archive name
115110
local archive_name
116111
if [ "${platform}" = "windows_x86_64" ]; then
117112
archive_name="${REPO_NAME}_Windows_x86_64.zip"
118113
else
119114
archive_name="${REPO_NAME}_$(echo "${platform}" | sed 's/_/ /' | awk '{print toupper(substr($1,1,1)) tolower(substr($1,2)) "_" $2}').tar.gz"
120115
fi
121116

122-
# Construct GitHub releases download URL
123-
local download_url="${GITHUB_URL}/releases/download/${version}/${archive_name}"
117+
# Construct S3 download URL (artifacts are stored in releases/version/ directory)
118+
local download_url="${S3_BASE_URL}/releases/${version}/${archive_name}"
124119

125120
log_info "Downloading Tiger CLI ${version} for ${platform}..."
121+
log_info "Source: S3"
122+
log_info "URL: ${download_url}"
126123

127124
# Download archive with retry logic
128125
local max_retries=3
@@ -137,9 +134,9 @@ install_binary() {
137134
log_warn "Download failed, retrying (${retry_count}/${max_retries})..."
138135
sleep 2
139136
else
140-
log_error "Failed to download Tiger CLI from GitHub after ${max_retries} attempts"
137+
log_error "Failed to download Tiger CLI from S3 after ${max_retries} attempts"
141138
log_error "URL: ${download_url}"
142-
log_error "Please check that the GitHub release exists and contains the expected assets"
139+
log_error "Please check that the S3 bucket contains the release files"
143140
exit 1
144141
fi
145142
fi

0 commit comments

Comments
 (0)