From 9053d615046e6c25fc5e21b033b1d19b32dff77c Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sun, 7 Jun 2026 23:20:33 -0700 Subject: [PATCH] rust release: fix large-disk/normal binary overwrite + publish md5 checksums (#9862) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * rust release: publish .md5 checksums alongside weed-volume binaries The versioned rust volume release built and uploaded the tarballs/zips but no checksum sidecars (the Go releases get .md5 automatically via go-release-action; this workflow uses softprops/action-gh-release directly). Generate an .md5 next to each asset (md5sum on linux/windows-bash, md5 -r on macOS) and include them in the release/artifact uploads, so downloaders (e.g. seaweed-up, which verifies md5 before installing weed-volume) can check integrity. Covers linux amd64+arm64, darwin amd64+arm64, windows amd64. * rust release: build large-disk and normal into separate target dirs Both cargo builds wrote to target//release/weed-volume, so the second (normal, --no-default-features) overwrote the first, and the Package step then copied that same binary into BOTH tarballs — the large-disk asset actually shipped the normal binary. Build each variant into its own --target-dir (target/large-disk and target/normal, both under target/ so the existing cache still covers them) and copy each tarball's binary from its own dir. --- .github/workflows/rust_binaries_release.yml | 55 ++++++++++++++++----- 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/.github/workflows/rust_binaries_release.yml b/.github/workflows/rust_binaries_release.yml index 44d77549a..96a3d1940 100644 --- a/.github/workflows/rust_binaries_release.yml +++ b/.github/workflows/rust_binaries_release.yml @@ -66,34 +66,42 @@ jobs: SEAWEEDFS_COMMIT: ${{ github.sha }} run: | cd seaweed-volume - cargo build --release --target ${{ matrix.target }} + cargo build --release --target ${{ matrix.target }} --target-dir target/large-disk - name: Build Rust volume server (normal) env: SEAWEEDFS_COMMIT: ${{ github.sha }} run: | cd seaweed-volume - cargo build --release --target ${{ matrix.target }} --no-default-features + cargo build --release --target ${{ matrix.target }} --no-default-features --target-dir target/normal - name: Package binaries run: | # Large disk (default, 5bytes feature) - cp seaweed-volume/target/${{ matrix.target }}/release/weed-volume weed-volume-large-disk + cp seaweed-volume/target/large-disk/${{ matrix.target }}/release/weed-volume weed-volume-large-disk tar czf weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz weed-volume-large-disk rm weed-volume-large-disk # Normal volume size - cp seaweed-volume/target/${{ matrix.target }}/release/weed-volume weed-volume-normal + cp seaweed-volume/target/normal/${{ matrix.target }}/release/weed-volume weed-volume-normal tar czf weed-volume_${{ matrix.asset_suffix }}.tar.gz weed-volume-normal rm weed-volume-normal + - name: Generate md5 checksums + run: | + for f in weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz weed-volume_${{ matrix.asset_suffix }}.tar.gz; do + md5sum "$f" > "$f.md5" + done + - name: Upload release assets if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v3 with: files: | weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz + weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz.md5 weed-volume_${{ matrix.asset_suffix }}.tar.gz + weed-volume_${{ matrix.asset_suffix }}.tar.gz.md5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -104,7 +112,9 @@ jobs: name: rust-volume-${{ matrix.asset_suffix }} path: | weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz + weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz.md5 weed-volume_${{ matrix.asset_suffix }}.tar.gz + weed-volume_${{ matrix.asset_suffix }}.tar.gz.md5 build-rust-volume-darwin: permissions: @@ -145,32 +155,40 @@ jobs: SEAWEEDFS_COMMIT: ${{ github.sha }} run: | cd seaweed-volume - cargo build --release --target ${{ matrix.target }} + cargo build --release --target ${{ matrix.target }} --target-dir target/large-disk - name: Build Rust volume server (normal) env: SEAWEEDFS_COMMIT: ${{ github.sha }} run: | cd seaweed-volume - cargo build --release --target ${{ matrix.target }} --no-default-features + cargo build --release --target ${{ matrix.target }} --no-default-features --target-dir target/normal - name: Package binaries run: | - cp seaweed-volume/target/${{ matrix.target }}/release/weed-volume weed-volume-large-disk + cp seaweed-volume/target/large-disk/${{ matrix.target }}/release/weed-volume weed-volume-large-disk tar czf weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz weed-volume-large-disk rm weed-volume-large-disk - cp seaweed-volume/target/${{ matrix.target }}/release/weed-volume weed-volume-normal + cp seaweed-volume/target/normal/${{ matrix.target }}/release/weed-volume weed-volume-normal tar czf weed-volume_${{ matrix.asset_suffix }}.tar.gz weed-volume-normal rm weed-volume-normal + - name: Generate md5 checksums + run: | + for f in weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz weed-volume_${{ matrix.asset_suffix }}.tar.gz; do + md5 -r "$f" > "$f.md5" + done + - name: Upload release assets if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v3 with: files: | weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz + weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz.md5 weed-volume_${{ matrix.asset_suffix }}.tar.gz + weed-volume_${{ matrix.asset_suffix }}.tar.gz.md5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -181,7 +199,9 @@ jobs: name: rust-volume-${{ matrix.asset_suffix }} path: | weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz + weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz.md5 weed-volume_${{ matrix.asset_suffix }}.tar.gz + weed-volume_${{ matrix.asset_suffix }}.tar.gz.md5 build-rust-volume-windows: permissions: @@ -213,33 +233,42 @@ jobs: SEAWEEDFS_COMMIT: ${{ github.sha }} run: | cd seaweed-volume - cargo build --release + cargo build --release --target-dir target/large-disk - name: Build Rust volume server (normal) env: SEAWEEDFS_COMMIT: ${{ github.sha }} run: | cd seaweed-volume - cargo build --release --no-default-features + cargo build --release --no-default-features --target-dir target/normal - name: Package binaries shell: bash run: | - cp seaweed-volume/target/release/weed-volume.exe weed-volume-large-disk.exe + cp seaweed-volume/target/large-disk/release/weed-volume.exe weed-volume-large-disk.exe 7z a weed-volume_large_disk_windows_amd64.zip weed-volume-large-disk.exe rm weed-volume-large-disk.exe - cp seaweed-volume/target/release/weed-volume.exe weed-volume-normal.exe + cp seaweed-volume/target/normal/release/weed-volume.exe weed-volume-normal.exe 7z a weed-volume_windows_amd64.zip weed-volume-normal.exe rm weed-volume-normal.exe + - name: Generate md5 checksums + shell: bash + run: | + for f in weed-volume_large_disk_windows_amd64.zip weed-volume_windows_amd64.zip; do + md5sum "$f" > "$f.md5" + done + - name: Upload release assets if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v3 with: files: | weed-volume_large_disk_windows_amd64.zip + weed-volume_large_disk_windows_amd64.zip.md5 weed-volume_windows_amd64.zip + weed-volume_windows_amd64.zip.md5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -250,4 +279,6 @@ jobs: name: rust-volume-windows_amd64 path: | weed-volume_large_disk_windows_amd64.zip + weed-volume_large_disk_windows_amd64.zip.md5 weed-volume_windows_amd64.zip + weed-volume_windows_amd64.zip.md5