From fa8a8f3af32c7a40dcbf250e48b66b0fb3dc4cf2 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Tue, 11 Nov 2025 17:26:00 +0000 Subject: [PATCH] Reduce release assets by removing duplicates Removed: - Individual .sha256 files (checksums.txt already contains all checksums) - Standalone binaries without version numbers (users should download versioned tarballs/zips) Standalone binaries are only needed in Docker images for the /download/ endpoint. GitHub releases should only contain versioned archives for user downloads. This reduces release assets from ~54 files to ~19 files per release. --- .github/workflows/release.yml | 15 +------------- scripts/build-release.sh | 37 +++++++---------------------------- 2 files changed, 8 insertions(+), 44 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5da7f2384..51b22e827 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -235,7 +235,7 @@ jobs: echo "release_url=$(gh release view ${TAG} --json url -q .url)" >> $GITHUB_OUTPUT echo "tag=${TAG}" >> $GITHUB_OUTPUT - - name: Upload checksums.txt first + - name: Upload checksums.txt env: GH_TOKEN: ${{ github.token }} run: | @@ -244,10 +244,6 @@ jobs: echo "Uploading checksums.txt..." gh release upload "${TAG}" release/checksums.txt - # Also upload individual .sha256 files - echo "Uploading individual checksum files..." - gh release upload "${TAG}" release/*.sha256 - - name: Upload release assets env: GH_TOKEN: ${{ github.token }} @@ -271,15 +267,6 @@ jobs: # Upload install.sh gh release upload "${TAG}" release/install.sh - # Upload standalone binaries (for direct download by installers) - echo "Uploading standalone binaries..." - # Upload binaries without .sha256 files (those were already uploaded) - for file in release/pulse-sensor-proxy-* release/pulse-host-agent-*; do - if [[ ! "$file" =~ \.sha256$ ]] && [[ ! "$file" =~ \.tar\.gz$ ]] && [[ ! "$file" =~ \.zip$ ]]; then - gh release upload "${TAG}" "$file" - fi - done - - name: Output release information run: | echo "✅ Release draft created successfully!" diff --git a/scripts/build-release.sh b/scripts/build-release.sh index d89369772..b0e0bfce1 100755 --- a/scripts/build-release.sh +++ b/scripts/build-release.sh @@ -289,26 +289,9 @@ cd ../.. # Cleanup rm -rf "$universal_dir" -# Copy standalone pulse-sensor-proxy binaries to release directory -# These are needed by install-sensor-proxy.sh installer script -echo "Copying standalone pulse-sensor-proxy binaries..." -for build_name in "${!builds[@]}"; do - cp "$BUILD_DIR/pulse-sensor-proxy-$build_name" "$RELEASE_DIR/" -done - -# Copy standalone pulse-host-agent binaries to release directory -# These are needed for manual host-agent installation without a running Pulse server -echo "Copying standalone pulse-host-agent binaries..." -for build_name in "${!builds[@]}"; do - cp "$BUILD_DIR/pulse-host-agent-$build_name" "$RELEASE_DIR/" -done - -# Also copy standalone macOS and Windows host-agent binaries -cp "$BUILD_DIR/pulse-host-agent-darwin-amd64" "$RELEASE_DIR/" -cp "$BUILD_DIR/pulse-host-agent-darwin-arm64" "$RELEASE_DIR/" -cp "$BUILD_DIR/pulse-host-agent-windows-amd64.exe" "$RELEASE_DIR/" -cp "$BUILD_DIR/pulse-host-agent-windows-arm64.exe" "$RELEASE_DIR/" -cp "$BUILD_DIR/pulse-host-agent-windows-386.exe" "$RELEASE_DIR/" +# NOTE: Standalone binaries are NOT copied to release directory +# They are only included in Docker images for /download/ endpoints +# Users should download versioned tarballs/zips from GitHub releases instead # Optionally package Helm chart if [ "${SKIP_HELM_PACKAGE:-0}" != "1" ]; then @@ -327,24 +310,18 @@ fi echo "Copying install.sh to release directory..." cp install.sh "$RELEASE_DIR/" -# Generate checksums (include tarballs, helm chart, standalone binaries, and install.sh) +# Generate checksums (include tarballs, zip files, helm chart, and install.sh) cd "$RELEASE_DIR" shopt -s nullglob extglob -# Match tarballs, then standalone binaries (excluding .tar.gz and .sha256), then install.sh -checksum_files=( *.tar.gz pulse-sensor-proxy-!(*.tar.gz|*.sha256) pulse-host-agent-!(*.tar.gz|*.sha256) install.sh ) +# Match all tarballs, zip files, and install.sh +checksum_files=( *.tar.gz *.zip install.sh ) if compgen -G "pulse-*.tgz" > /dev/null; then checksum_files+=( pulse-*.tgz ) fi if [ ${#checksum_files[@]} -eq 0 ]; then echo "Warning: no release artifacts found to checksum." else - # Generate individual .sha256 files for each asset (required by install.sh) - for file in "${checksum_files[@]}"; do - sha256sum "$file" > "${file}.sha256" - done - - # Also generate combined checksums.txt for convenience - # Sort checksums by filename for deterministic output (prevents #671 checksum mismatches) + # Generate checksums.txt with sorted output for deterministic results (prevents #671 checksum mismatches) sha256sum "${checksum_files[@]}" | sort -k 2 > checksums.txt if [ -n "${SIGNING_KEY_ID:-}" ]; then if command -v gpg >/dev/null 2>&1; then